vim でのオススメ plugin
最近 .vimrcを貼り付けるのが流行ってるみたいなので自分も.vimrcを貼り付け、るわけでなくオススメの plugin を紹介してみようかと。
Align.vim
http://www.vim.org/scripts/script.php?script_id=294
痒いところに手が届く整形ぷらぎん。
options = {
width => 100,
height => 50,
background => nil,
}
なソースを範囲選択して
:'<,'>Align =>
すると
options = {
width => 100,
height => 50,
background => nil,
}
のように整形してくれます。
Allargs.vim
すべてのバッファでコマンドを実行。例えば開いてるバッファのすべての文字列を置換したければ、
:Allargs %s/perl/ruby/ge|update
とするだけ!ソースはどっかから拾ってきた物です。作者さんサンクス!(2chのvimスレ?)
" Allargs.vim
" ex)
" :Allargs %s/foo/bar/ge|update
" 使う時。foo を bar に置換しまくる。
" :Allargs %s/foo/bar/ge|update
" eオプションをつけないと foo が無いというメッセージがのんびり表示されて、いつま
" でたっても置換が終わらないので気をつけよう(それに気づかずに密かにハマった)
" コマンドは | で連続で実行できて、update は変更のあったバッファだけを保存。と。
" カレントの *.cpp を置換する場合は予め、
" :ar *.cpp
" ってやっとくと全部読み込まれる。
" 確認するには
" :ar
function! Allargs(command)
let i = 0
while i < argc()
if filereadable(argv(i))
execute "e " . argv(i)
execute a:command
endif
let i = i + 1
endwhile
endfunction
command! -nargs=+ -complete=command Allargs call Allargs()
commentout.vim
http://nanasi.jp/articles/vim/commentout_source.html
範囲選択して, + コメントアウトしたい記号を入力することで、コメントアウトできるもの。また,cでコメント解除機能も。通常コメントアウトする場合には矩形選択でI#とかやらなくちゃなりませんが、commentout.vimを使うとだいぶ楽できます。
eregex.vim
http://www.vector.co.jp/soft/unix/writing/se265654.html
すごーーーーーく便利です。vimの正規表現をrubyやperlの正規表現な入力でできる、というプラグイン。通常のvimのregexpはrubyやperlの正規表現に慣れてる身としてはかなりツライんですがそれもこれで解決。使い方は簡単で、
%s #
subtech:keyword:vim">vimの正規表現による置換
%S # eregexの正規表現
subtech:keyword:vim">vimによる置換
%g #
subtech:keyword:vim">vimの(ry
:%G # eregexの(ry
/ # vimの(ry
:M/ # eregex の(ry
みたいに正規表現を使う場所で大文字にすればいいだけ。例えばFooBarFxxBrをBarFooBxFxxに置換したければ
:%S/(F.{2})(B.{1,2})/\2\1/g
でOK(わかり難い例ですね。。)。またvimの正規表現にコンバートしてくれるコマンドもあるのでvimscriptを書いてるときにvimの正規表現を使う際も安心。
:echo E2v('/(F.{2})(B.{1,2})/\2\1/')
/\(F.\{2}\)\(B.\{1,2}\)/\2\1/ # 結果
grep.vim
http://www.vim.org/scripts/script.php?script_id=311
かなり有名なスクリプト。ファイルからgrepで特定の文字列を含むファイルを探す際に通常は使うようですが、自分はもっぱらGrepBuffer専用。
:GrepBuffer
Foo
とかして、いま開いてるすべてのバッファから'Foo'という文字列を探すのに使ってます。
incbufswitch.vim
http://vimwiki.net/?scripts%2F7
インクリメンタルサーチでバッファ切り替えができるスクリプト。C-sで検索できるのでそこからインクリメンタルにバッファ切り替えが!
matchit.vim
http://nanasi.jp/articles/vim/matchit_vim.html
http://advweb.seesaa.net/article/10554498.html
vimの%によるブレーズは括弧に飛ぶ機能の強化。filetypeがrubyな時は http://www.vim.org/scripts/script.php?script_id=303 の ruby.vim も利用すると、 def〜endなんかにも飛ぶようになります。
追記: rubyでのmatchitはvim-ruby(http://rubyforge.org/projects/vim-ruby )のmatchitのほうがより高機能です。なひさんに教えていただきました、thx!
minibufexpl.vim
http://nanasi.jp/articles/vim/minibufexpl_vim.html
バッファ管理プラグイン。無いとvimでプログラミングできません。screen likeなキーバインドになるように、.vimrcには
nmap <Space> :MBEbn<CR>
" GNU screen likeなキーバインド
let mapleader = "^F"
nnoremap <Leader><Space> :MBEbn<CR>
nnoremap <Leader>n :MBEbn<CR>
nnoremap <Leader><C-n> :MBEbn<CR>
nnoremap <Leader>p :MBEbp<CR>
nnoremap <Leader><C-p> :MBEbp<CR>
nnoremap <Leader>c :new<CR>
nnoremap <Leader><C-c> :new<CR>
nnoremap <Leader>k :bd<CR>
nnoremap <Leader><C-k> :bd<CR>
nnoremap <Leader>s :IncBufSwitch<CR>
nnoremap <Leader><C-s> :IncBufSwitch<CR>
nnoremap <Leader><Tab> :wincmd w<CR>
nnoremap <Leader>Q :only<CR>
nnoremap <Leader>w :ls<CR>
nnoremap <Leader><C-w> :ls<CR>
nnoremap <Leader>a :e #<CR>
nnoremap <Leader><C-a> :e #<CR>
nnoremap <Leader>" :BufExp<CR>
nnoremap <Leader>1 :e #1<CR>
nnoremap <Leader>2 :e #2<CR>
nnoremap <Leader>3 :e #3<CR>
nnoremap <Leader>4 :e #4<CR>
nnoremap <Leader>5 :e #5<CR>
nnoremap <Leader>6 :e #6<CR>
nnoremap <Leader>7 :e #7<CR>
nnoremap <Leader>8 :e #8<CR>
nnoremap <Leader>9 :e #9<CR>
とか書いてます。
monday.vim
http://nanasi.jp/articles/vim/monday_vim.html
monday.vim 自体の機能はぜんぜん使ってませんが、リンク先の設定をしてtrue/falseの切り替えだけのために使ってます。
MRU.vim
http://nanasi.jp/articles/vim/mru_vim.html
開いたファイルの履歴を自動で記録するプラグインです。
yankring.vim
http://nanasi.jp/articles/vim/yankring_vim.html
通常vimのコピーした内容はレジスタに記録されていくんですが、それを探して貼り付けたりするのが面倒。つまり三つ前にコピーした内容を貼り付けたい!などのシチュエーションで効果を発揮します。
またコピーした内容を文字列で検索してそいつを貼り付けることも簡単にできます。『Fooって文字列を含むのをを何回か前にコピーしたんだけど・・・』なときも簡単に探し出してペーストできます。
いままで紹介してきたのがpluginでは個人的にはオススメ。しかしplugin以外にも.vim以下には数々のディレクトリがあってそれらを使いこなさないとvimマスターになれない、かどうかは知りませんが他にもいろんなTipsがあるので今後も紹介するかもしれませんyp!