読者です 読者をやめる 読者になる 読者になる

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

とするだけ!ソースはどっかから拾ってきた物です。作者さんサンクス!(2chvimスレ?)

" 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正規表現rubyperl正規表現な入力でできる、というプラグイン。通常のvimのregexpはrubyperl正規表現に慣れてる身としてはかなりツライんですがそれもこれで解決。使い方は簡単で、

%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=303ruby.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!