Vimの編集に便利なプラグイン5つ

New Vim colours
前回は、 Vimのカーソル移動を補助するプラグイン4つを書きましたが、今回は、編集に便利なプラグインを紹介していきたいと思います。

photo credit: jasonwryan via photopin cc



Vim Advent Calendar の 64 日目の記事です。


Vimで何かを編集しようといった時に、よく使う機能が、yank, undo, buffer等だと思います。もちろん、そんなものは使わないという人もいるかと思いますが、私はよく使います。したがって、今回は、これらの機能を使っていく上で便利なプラグインを幾つか紹介したいと思います。また、上の機能とは直接関係ないけど、編集に便利なプラグインもいくつか紹介します。


目次



# プラグイン内容
1 YankRing.vim ヤンク履歴を参照
2 undotree.vim アンドゥ履歴を参照
3 easybuffer.vimバッファ一覧を表示
4 DirDo.vim コマンドの一括実行を補助
5 switch.vim 特定の文字列を切り替え


YankRing.vim


YankRing.vimは、ヤンク履歴を参照できるようにするプラグインです。


YankRing.vimのインストール


NeoBundleを導入していることを前提に解説します。以下を filetype plugin indent onの上に追記します。


NeoBundle 'YankRing.vim'



そして、 :NeoBundleInstallを実行してください。シェルから vim +NeoBundleInstallでもできます。


YankRing.vimの使い方


私は、以下の様なキーマップを使用しています。これで、 ,yを押すことで、ヤンク履歴が参照できます。また、ペーストしたあと、 C-pで古い履歴、 C-nで新しい履歴に置き換えることができます。


" , y でヤンク履歴
" YankRing.vim
" http://nanasi.jp/articles/vim/yankring_vim.html
" https://github.com/yuroyoro/dotfiles/blob/master/.vimrc.plugins_setting
nmap ,y :YRShow<CR>



ちなみに、クリップボードを共有したい場合は、以下のように書きます。この設定がないと YankRing.vim が動かないことがあるようです。

" クリップボード共有
" http://vim-users.jp/2010/02/hack126/
set clipboard+=unnamedplus,unnamed






undotree.vim


undotree.vimは、やり直し履歴を分かりやすく表示し、かつ、いくつか前のやり直しであっても、すぐに開くことが出来るようにするプラグインです。


undotree.vimのインストール


NeoBundleを導入していることを前提に解説します。以下を filetype plugin indent onの上に追記します。


NeoBundle 'mbbill/undotree'



そして、 :NeoBundleInstallを実行してください。


undotree.vimの使い方


私は以下のように設定し、 <Leader>uで開けるようにしています。

" undo履歴を表示する。? でヘルプを表示
" undotree.vim
" http://vimblog.com/blog/2012/09/02/undotree-dot-vim-display-your-undo-history-in-a-graph/
" https://github.com/r1chelt/dotfiles/blob/master/.vimrc
nmap <Leader>u :UndotreeToggle<CR>
let g:undotree_SetFocusWhenToggle = 1
let g:undotree_SplitLocation = 'topleft'
let g:undotree_SplitWidth = 35
let g:undotree_diffAutoOpen = 1
let g:undotree_diffpanelHeight = 25
let g:undotree_RelativeTimestamp = 1
let g:undotree_TreeNodeShape = '*'
let g:undotree_HighlightChangedText = 1
let g:undotree_HighlightSyntax = "UnderLined"





easybuffer.vim


easybuffer.vimは、バッファ一覧を表示し、ショートカットですぐに開けるようにしてくれるプラグインです。その他、詳細情報も表示してくれるので、わかりやすいと思います。


easybuffer.vimのインストール


NeoBundleを導入していることを前提に解説します。以下を filetype plugin indent onの上に追記します。


NeoBundle 'troydm/easybuffer.vim'



そして、 :NeoBundleInstallを実行してください。


easybuffer.vimの使い方


:EasyBufferを実行します。




DirDo.vim


argdo


argdoは、何かのコマンドを一括実行したいときに使います。例えば、あるディレクトリに複数の .rbファイルがあるとします。そして、そのファイルの特定のキーワードを一括変換したいときは以下のようにします。

:argadd *.rb

:argdo %s/hoge/hehe/g | update



DirDo.vimのインストール


ディレクトリを指定して、 コマンドを一括実行したいときは、 DirDo.vimが便利です。


NeoBundleを導入していることを前提に解説します。以下を filetype plugin indent onの上に追記します。


NeoBundle 'vim-scripts/DirDo.vim'



そして、 :NeoBundleInstallを実行してください。


DirDo.vimの使い方


:DDD app/controllers

:DDP *.rb

:DDO :%s/hoge/hoge/g | update








switch.vim


switch.vimのインストール


NeoBundleを導入していることを前提に解説します。以下を filetype plugin indent onの上に追記します。


NeoBundle 'AndrewRadev/switch.vim'



そして、 :NeoBundleInstallを実行してください。


switch.vimの使い方


設定ファイルに例えば、以下を追記します。


" switch.vim
" http://www.vimninjas.com/2012/09/12/switch/
let g:variable_style_switch_definitions = [
\   {
\     'f': {
\       'foo': 'bar'
\     },
\
\     'b': {
\       'bar': 'foo'
\     },
\   }
\ ]
nnoremap + :call switch#Switch(g:variable_style_switch_definitions)<cr>
nnoremap - :Switch<cr>



すると、 foofの部分にカーソルが乗っている状態で +を押すと、 foobarに切り替わります。


そして、繰り返し +を押すと元に戻ります。これは、 barbの位置にカーソルが乗っているからです。





上の例を見てもわかるように、このプラグインは、様々な使い方ができます。そして、 :Switchを使う場合は、例えば、 true などの上で - を押します。すると、文字列が false に変換されたと思います。


似たようなプラグインには以下のようなものがあります。


taku-o/vim-toggle

zef/vim-cycle

明日は、 @manga_osyo さんです。