Top/Linux/Vim

Vimはてなブックマーク

高性能エディタ。

クリック可能な関数名一覧を表示する

taglist.vimが使えない人向け。

~/.vimrcに下記を記述。
F12を押すと、クリック可能な関数名一覧が表示されます。
ctags必須。終了するときは:qaや:wqaで。

showfunc.png
" クリック可能な関数名一覧を得る関数
" from http://www.vim.org/tips/tip.php?tip_id=79
function! ShowFunc()
 
    let gf_s = &grepformat
    let gp_s = &grepprg
 
    let &grepformat = '%*\k%*\sfunction%*\s%l%*\s%f %*\s%m'
    let &grepprg = 'ctags -x --c-types=f --sort=no -o -'
 
    write
    silent! grep %
    cwindow
 
    let &grepformat = gf_s
    let &grepprg = gp_s
 
    " 縦分割が好みなので追加
    wincmd H
    vertical resize 30
    set nonumber
endfunc
map <F12> :call ShowFunc()<CR>

オート関数定義表示

~/.vimrcに下記を記述。
(を入力する度に関数定義が表示されます。

" オート関数定義表示
inoremap ( <Esc>h:silent! ptag <C-r><C-w><CR>la(

現在の関数以外の関数を自動的に折り畳む

~/.vimrcに下記を記述。

foldnotcurfunc.png
" 現在の関数以外の関数を自動的に折り畳む
set foldmethod=syntax
set foldopen=all
set foldclose=all
set foldnestmax=1

関数をハイライトする

~/.vimrcに下記を記述。

" 関数をハイライトする
function! HighlightFunc()
    syntax match Func /[A-Z_a-z]\w*\(\s*(\)\@=/
    highlight Func ctermfg=3
endfunc
autocmd BufNew,BufRead * call HighlightFunc()

スペース類をハイライトする

~/.vimrcに下記を記述。

" スペース類をハイライトする
function! HighlightDislikeSpace()
    " 全角スペース
    syntax match DislikeSpace / /
    " タブ
    syntax match DislikeSpace /\t/
    " 行末のスペース
    syntax match DislikeSpace /\S\@<=\s\+$/
    highlight DislikeSpace cterm=underline ctermfg=1
endfunc
autocmd BufNew,BufRead * call HighlightDislikeSpace()

関数を一発で範囲選択する

~/.vimrcに下記を記述。関数内でvfと入力すると範囲選択できる。

" 関数を一発で範囲選択する
nnoremap vf ][v[[?^[\s}]*;*$<CR>j

Depian etchのVimで構文ハイライトが効かない

Depian etchのVimで:syntax onすると、

E216: そのようなグループもしくはイベントはありません: filetypedetect BufRead

などと言われて構文ハイライトが効かない場合、
/etc/vim/vimrcの下記の記述を

set runtimepath=~/.vim,/etc/vim,/usr/share/vim/vimfiles,/usr/share/vim/addons,/usr/share/vim/vim63,/usr/share/vim/vimfiles,/usr/share/vim/addons/after,~/.vim/after

次のようにすると解消する。

set runtimepath=~/.vim,/etc/vim,/usr/share/vim/vimfiles,/usr/share/vim/addons,/usr/share/vim/vim70,/usr/share/vim/vimfiles,/usr/share/vim/addons/after,~/.vim/after

まとめてコメントアウト/アンコメントする

コメントアウト

  1. Ctrl+vで矩形選択
  2. I*1
  3. // とか #
  4. エスケープキー

アンコメント

  1. Ctrl+vで矩形選択
  2. d

参考

Amazon

*1 大文字
差分 一覧