behold the COMMENTER
This commit is contained in:
54
plugin/comment.vim
Normal file
54
plugin/comment.vim
Normal file
@@ -0,0 +1,54 @@
|
||||
let s:comment_filetype_map = {
|
||||
\ 'c': '\/\/',
|
||||
\ 'cpp': '\/\/',
|
||||
\ 'java': '\/\/',
|
||||
\ 'vhdl': '--',
|
||||
\ 'python': '#',
|
||||
\ 'vim': '"',
|
||||
\ 'tex': '%',
|
||||
\ 'sh': '#'
|
||||
\ }
|
||||
|
||||
let s:block_filetype_map = {
|
||||
\ 'c': ['\/\*', '\*\/'],
|
||||
\ 'java': ['\/\*', '\*\/'],
|
||||
\ 'cpp': ['\/\*', '\*\/'],
|
||||
\ 'python': ['"""', '"""'],
|
||||
\ 'vim': ['" {{{', '" }}}']
|
||||
\ }
|
||||
|
||||
function! MyCommenter(uncomment) range
|
||||
let comment = get(s:comment_filetype_map, &ft, '')
|
||||
if !len(comment)
|
||||
return
|
||||
endif
|
||||
let search_range = a:firstline . ',' . a:lastline
|
||||
if !a:uncomment
|
||||
execute search_range . 's/\(^\s*\)\(\S\)/\1' . comment . ' \2/e'
|
||||
else
|
||||
execute search_range . 's/\(^\s*\)' . comment . '\s*/\1/e'
|
||||
endif
|
||||
nohl
|
||||
endfunction
|
||||
|
||||
function! MyBlocker(unblock) range
|
||||
let block = get(s:block_filetype_map, &ft, [])
|
||||
if !len(block)
|
||||
return
|
||||
endif
|
||||
if !a:unblock
|
||||
execute 'normal! ' . a:lastline . 'gg'
|
||||
execute 'normal! o' . substitute(block[1], '\', '', 'g') . "\<esc>"
|
||||
execute 'normal! ' . a:firstline . 'gg'
|
||||
execute 'normal! O' . substitute(block[0], '\', '', 'g') . "\<esc>"
|
||||
else
|
||||
execute 'normal! ?' . block[0] . "\<cr>" . 'dd'
|
||||
execute 'normal! /' . block[1] . "\<cr>" . 'dd'
|
||||
endif
|
||||
noh
|
||||
endfunction
|
||||
|
||||
command! -range CommenseComment <line1>,<line2>call MyCommenter(0)
|
||||
command! -range CommenseUncomment <line1>,<line2>call MyCommenter(1)
|
||||
command! -range CommenseBlock <line1>,<line2>call MyBlocker(0)
|
||||
command! -range CommenseUnblock <line1>,<line2>call MyBlocker(1)
|
||||
@@ -50,10 +50,11 @@ set langmenu=en_US.UTF-8
|
||||
" {{{
|
||||
let g:tagbar_autofocus = 1
|
||||
" }}}
|
||||
"
|
||||
|
||||
" LatexBox stuff
|
||||
" {{{
|
||||
let g:LatexBox_no_mappings = 1
|
||||
let g:LatexBox_quickfix = 2
|
||||
let g:LatexBox_build_dir = 'build'
|
||||
let g:LatexBox_latexmk_options = '-xelatex -outdir=build'
|
||||
" }}}
|
||||
@@ -121,6 +122,13 @@ else
|
||||
let my_settings_file = "$HOME/.vim/plugin/settings.vim"
|
||||
endif
|
||||
|
||||
nnoremap <leader>c mc:CommenseComment<cr>`c:delm c<cr>
|
||||
nnoremap <leader>xc mc:CommenseUncomment<cr>`c:delm c<cr>
|
||||
vnoremap <leader>c :CommenseComment<cr>
|
||||
vnoremap <leader>xc :CommenseUncomment<cr>
|
||||
vnoremap <leader>b :CommenseBlock<cr>
|
||||
nnoremap <leader>xb mc:CommenseUnblock<cr>`c:delm c<cr>
|
||||
|
||||
nnoremap <leader>sl :tabe $MYVIMRC<cr>
|
||||
nnoremap <leader>ss :execute 'tabe' my_settings_file<cr>
|
||||
nnoremap <leader>sv :source $MYVIMRC<cr>:execute 'source' my_settings_file<cr>
|
||||
@@ -135,6 +143,8 @@ nnoremap <leader>fl mf081lF<space>r<cr>`f:delm f<cr>
|
||||
|
||||
vnoremap <leader>" <esc>`>a"<esc>`<i"<esc>
|
||||
vnoremap <c-c> "+y
|
||||
nnoremap <c-v> "+p
|
||||
inoremap <c-v> <esc>"+p
|
||||
" }}}
|
||||
|
||||
" Mappings for Plugins
|
||||
|
||||
Reference in New Issue
Block a user