概要
以前、vimから編集中のrubyスクリプトを実行するショートカットを定義する方法を紹介した記事を書きました。
(『vimから編集中のrubyスクリプトを実行』http://qiita.com/smison/items/2ee7aaa88299f6972c52)
nnoremap <C-e> :!ruby %
というキーマップを.vimrcに仕込めばいいというのがその方法だったわけですが、
rubyしかダメというのはとても不便です。
pythonやperlのスクリプトを書くときはいちいち.vimrcを変更しなければならない、というのではあんまりです。
なので、他のスクリプト言語も扱えるようにこれを拡張します。
方法
下記のように.vimrcに書けばOKです。<C-e>
でruby, python, perlスクリプトが実行できるようになります。
スクリプト種別は拡張子で識別され、対応した実行コマンドがvimを起動したまま、編集中のファイルに対して叩かれます。
autocmd BufNewFile,BufRead *.rb nnoremap <C-e> :!ruby %
autocmd BufNewFile,BufRead *.py nnoremap <C-e> :!python %
autocmd BufNewFile,BufRead *.pl nnoremap <C-e> :!perl %
説明
nnoremap...
以降の部分は以前の記事(『vimから編集中のrubyスクリプトを実行』http://qiita.com/smison/items/2ee7aaa88299f6972c52 )を参考にしてください。autocmd BufNewFile,BufRead *.XX
の部分で拡張子を識別し、対応したキーマップを定義しています。
autocmdは対応したイベントが発生したときに指定したコマンドを実行します。
今回の場合、「新しいファイルを開いたとき(BufNewFile)」または「既存のファイルを読み込んだとき(BufRead)」に、
「拡張子が *.XX であれば」nnoremap以降を実行する、という指定になります。
参考文献
vimから編集中のrubyスクリプトを実行 http://qiita.com/smison/items/2ee7aaa88299f6972c52
vimで拡張子とsyntaxの紐付け — vim備忘録 http://blog.da0shi.com/2014/01/209/
おさらい autocmd/augroup http://qiita.com/s_of_p/items/b61e4c3a0c7ee279848a