最近ホットな Vim Plugin を3つ紹介します。どれもカッコいいプラグインですので、気に入ったら是非使ってみてください。
##vim-over
###vim-overの概要
vim-overは、EmacsのEvilのような一括置換ができるプラグインです。
どういうことかというと、置換する対象文字列がハイライトされ、さらに、その横に変更予定の文字列を表示するという、見た目がすごくカッコいい置換なのです。
Vimでは、:%s/foo/bar/g
としても、ハイライトされませんし、変更予定の文字列も表示されません。
たしかに、1つずつ確認するには、:%s/foo/bar/gc
でできますが、どうも味気なく、地味なのです。
しかし、vim-over
を使うと、そんな地味さも吹っ飛びます。以下の画像を見てください。画像では、一括置換を実行していますが、視覚的に分かりやすいし、カッコいい置換になっています。
%s/command/testpaste
###vim-overのインストール
プラグイン管理をしている場合は、以下のようにします。プラグイン管理というのは、具体的には、VundleやNeoBundleを使った方法を言います。
NeoBundle 'osyo-manga/vim-over'
:so $MYVIMRC | NeoBundleInstall
プラグイン管理していない場合は、プラグインフォルダに当該プラグインをダウンロードします。
$ mkdir -p ~/.vim/plugin/
$ cd !$ && git clone https://github.com/osyo-manga/vim-over.git
###vim-overの使い方
vim-over
の使い方は簡単です。基本的には、コマンドが設定されていますので、そちらで起動します。
:OverCommandLine
キーマップで起動したい方は、~/.vimrc
設定ファイルに以下を追記します。
"" over.vim {{{
" over.vimの起動
nnoremap <silent> <Leader>m :OverCommandLine<CR>
" カーソル下の単語をハイライト付きで置換
nnoremap sub :OverCommandLine<CR>%s/<C-r><C-w>//g<Left><Left>
" コピーした文字列をハイライト付きで置換
nnoremap subp y:OverCommandLine<CR>%s!<C-r>=substitute(@0, '!', '\\!', 'g')<CR>!!gI<Left><Left><Left>
" }}}
これで、,
+m
を押すと、vim-over
を起動できるようになりました。ちなみに、,
は<Leader>
を意味します。キーボードによって異なりますので注意が必要です。
追記です。ノーマルモードでsub
を押すと、カーソル下の単語をハイライト付きで置換できます。また、subp
を押すと、コピーした文字列をハイライト付きで置換できます。
コマンドラインスペースでの操作方法は以下のとおりになっています。
キー | 効果 |
---|---|
< Up > or < C-p > | 1つ前のコマンド履歴を挿入 |
< Down > or < C-n > | 1つ後のコマンド履歴を挿入 |
< C-r >< C-f > | カーソル下のファイル名を挿入 |
< C-r >< C-w > | カーソル下の word を挿入 |
< C-r >< C-r > | カーソル下の WORD を挿入 |
< C-r >{0-9a-z"%#:-=.*} | 番号/名前付きレジスタの挿入 |
初期のvim-over
は、割と見た目重視だったような気がするのですが、最近、本気で便利になってきました。
また、コマンドラインのキーマッピングする機能を追加されています。
" OverCommandLineNoremap {lhs} {rhs}
" {lhs} を {rhs} のキーとして割り当てる
" ここで設定する事ができるキーは1文字、
" もしくは修飾キー+1文字のみ割り当てることができます
OverCommandLineNoremap <A-b> <C-b>
OverCommandLineNoremap <A-f> <C-f>
##yankround.vim
###yankround.vimの概要
副作用の少ないYankRing.vimを目指して作られたプラグインです。
YankRing.vim
は他のプラグインや設定と干渉してしまう弊害があるので、好みが分かれるプラグインでした。
しかし、その機能が魅力的故に、我慢して使っている人も多かったみたいです。
そこで登場したのが、yankround.vimです。
YankRing.vim
とほぼ同じようなことが実現できて、かつ、弊害が少ないです。
###yankround.vimのインストール
NeoBundle 'LeafCage/yankround.vim'
NeoBundle 'kien/ctrlp.vim'
:so $MYVIMRC | NeoBundleInstall
プラグイン管理していない場合は、プラグインフォルダに当該プラグインをダウンロードします。
$ mkdir -p ~/.vim/plugin/
$ cd !$ && git clone https://github.com/LeafCage/yankround.vim.git
###yankround.vimの使い方
" yankround.vim {{{
"" キーマップ
nmap p <Plug>(yankround-p)
nmap P <Plug>(yankround-P)
nmap <C-p> <Plug>(yankround-prev)
nmap <C-n> <Plug>(yankround-next)
"" 履歴取得数
let g:yankround_max_history = 50
""履歴一覧(kien/ctrlp.vim)
nnoremap <silent>g<C-p> :<C-u>CtrlPYankRound<CR>
" }}}
基本的には、ペースト直後にC-n
を押して、履歴を辿れます。
そして、,
+g
+C-p
を押して、履歴一覧をctrlp.vimで表示し、選択することが出来ます。
##airsave.vim
###airsave.vimの概要
airsave.vimは、簡単には、オートセーブのプラグインです。
現在行が変更されると、ノーマルモードに移行した時、ファイルが自動で保存されるようになります。
###airsave.vimのインストール
NeoBundle 'syui/airsave.vim'
:so $MYVIMRC | NeoBundleInstall
プラグイン管理していない場合は、プラグインフォルダに当該プラグインをダウンロードします。
$ mkdir -p ~/.vim/plugin/
$ cd !$ && git clone https://github.com/syui/airsave.vim.git
###wauto.vimの使い方
nmap <Leader>s <Plug>(AutoWriteStart)
nmap <Leader>ss <Plug>(AutoWriteStop)
キーでオートセーブの有効無効を切り替えます。
キー | 効果 |
---|---|
< Leader >+s | オートセーブを有効にする |
< Leader >+ss | オートセーブを無効にする |
設定でオートセーブの有効無効を設定します。
let g:auto_write = 1