surround.vimにドットコマンドを効かせる
surround.vimはカッコやクォートなどのペアを消したり置換したりできるコマンドを加えるplugin。ダブルクォートになっているものをシングルクォートにしたいことなどよくあるので便利。
複数箇所に同じ置換を行いたい場合、少数ならドットコマンドで繰り返し適用することが多いが、これはvimのデフォルトの機能しか認識してくれないためsurround.vimのコマンドなどには適用されない。
これを解消してくれるのがrepeat.vim
https://github.com/tpope/vim-repeat
ただ入れるだけでOK、私はdeinを使ってるのでこれだけ
[[plugins]] repo = 'tpope/vim-repeat' on_idle = 1
READMEを読むとsurround.vim以外にもいくつかのpluginに対応している模様
その中に地味に便利そうなpluginがあったのでもう一つ
https://github.com/tpope/vim-speeddating
これはCtrl-a, Ctrl-xの機能を拡張するpluginで、対応する文字列がdateのformatだった場合はそれに合わせてincrement, decrementしてくれるというもの。2016-10-29 00:00:00みたいな文字列の29を30にincrementしようとしてCtrl-aしたら28になったということは誰もが経験してるはず。
こちらのpluginもただ入れるだけでOKなので楽ちん
Neomake - 非同期実行のSyntastic
syntasticを使っていると大きなファイルでsyntax checkなどするとしばらく応答が返らないことがよくある。neovimには非同期でjobを実行する機能があり、それを活かしたpluginとしてNeomakeというsyntasticと同様の機能をもつものがあることを知ったので使ってみた
deinを使っていれば以下のような設定だけでOK
[[plugins]] repo = 'neomake/neomake' hook_add = ''' autocmd! BufWritePost * Neomake '''
ファイルを開いて最初にNeomakeを実行するときだけ一瞬固まるが、その後はNeomake実行時にもカーソルが動かせること確認できた
ちなみにvimでも動くが非同期実行はできない
デフォルトの設定ではerrorを見つけた際もlocation listが開かないので:lopenを使う
もしくは以下の設定を入れれば自動で開くようになる
let g:neomake_open_list = 2
syntasticと同じく、:NeomakeInfoで現在どのmakerが有効なのか確認できる(makerとはsyntasticで言うcheckerのこと)
また、makerのカスタマイズもsyntasticと同様の形でできる
"let g:neomake_{ filetype }_{ makername }_maker let g:neomake_javascript_jshint_maker = { \ 'args': ['--verbose'], \ 'errorformat': '%A%f: line %l\, col %v\, %m \(%t%*\d\)', \ } let g:neomake_javascript_enabled_makers = ['jshint']
errorを示すsignの変更も可能
もちろんwarningやinfoなども別々に可能
let g:neomake_error_sign = { \ 'text': 'E', \ 'texthl': 'ErrorMsg', \ }
詳しくはhelpで
参考
vimでコマンドの出力をキャプチャする
特定のファイルにコマンドの出力を書き出したいときはこれ
!をつけることで新規のファイルでも書き込める
:redir! > file :echo 'aaa' :redir end
これでaaaという文字列がfileに書かれる
ちなみにredirはrediと省略して書ける
また、rediはredirectの略
ファイルに追記したい場合は>>を使えばよい
:redi >> % :echo 'bbb' :redi end
これでbbbという文字列が現在編集中のファイルの末尾に追記される(bufferに反映させるには:e!する必要あり)
出力をレジスタに入れることもできる
:redi @a :echo 'testtest' :redi end
レジスタに入れてしまえば後はbufferで好きなように使える
redi endが実行されるまでの出力すべてがキャプチャされるため、その間にエラーなどが発生すればそれもすべてキャプチャされることに注意