vim × Perl のコンパイルを簡単にするコマンドと設定 (Perl.vim)
perl.vimコンパイラプラグインで、Perlコードをクィックフィックスする。 — 名無しのvim使いのエントリーを読んで、
デフォルトでPerl.vimが入ってるという事を知ったのが数週間以上前。
便利すぎてすごくショックだったのでメモメモ。
概要
compilerディレクトリにあるperl.vimコンパイラプラグインを使うと、
Perl言語で書かれたコードの文法チェックと、QuickFixリストを利用したコードの修正作業を手早く行えます。
インストール方法
perl.vimコンパイラプラグインは、デフォルトでインストールされています。
perl.vimコンパイラプラグインで、Perlコードをクィックフィックスする。 — 名無しのvim使い
1) Perlコンパイラの選択
:compilerでコンパイラの選択 vim docs
:comp[iler][!] {name} コンパイラ{name}を使うときに機能するオプション を設定する。"!"オプションがない場合は現在のバ ッファに対して設定される。"!"がある場合はグロ ーバルオプションが設定される。 "file.foo"で":compiler foo"とし、その後別のバッ ファで":compiler! bar"としたとき、Vimは"file.fo o"では"foo"を使い続ける。 {|+eval|機能なしでコンパイルされた場合には使用 できない} "compiler"ディレクトリ内にあるVimプラグインによって、選択されたコンパイラを使 うためのオプションが設定される。":compiler"はローカルオプションを設定し、"compi ler!"はグローバルオプションを設定する。
:compiler perl
毎回指定するのはめんどくさいので.vimrcにautocmdで以下の内容を追加
.vimrc
"コンパイラの指定 autocmd FileType perl,cgi :compiler perl
2) :makeコマンドを使ってPerlのシンタックスチェックを行う
:makeの使い方 vim docs
:mak[e][!] [arguments] 1. vimが|+autocmd|つきでビルドされているならば、|QuickFixCmdPre|に関連付けられた自動コマンドが全て実行される。 2, オプション'autowrite'がonならば変更のあるバッファは保存される。
.vimrcにautocmd設定したので
そのままPerlファイルを開いただけで:compiler perl指定をせずに:makeが実行可能になる。
:make ":!perl -c <ファイル名>と同じ
3) :cwで(QuickFix window)エラーの確認 vim doc
:cw[indow] [height] 認識されたエラーがあるときQuickFixウィンドウを開く。 ウィンドウがすでに開いていて認識されたエラーがない 場合はウィンドウを閉じる。
エラーがあれば、エラー結果がQuickFixリストに入る。
※ :clでエラーの一覧を表示する vim docs
:cl[ist] [from] [, [to]] 有効なエラーを全て列挙する|quickfix-valid|。[from]及び もしくは[to]で行数を指定された場合、その範囲のエラーが 表示される。負であった場合最後のエラーから数える。-1 が最後のエラーとなる。設定'switchbuf'がバッファの移動 に関係する。
※ エレガントな保存とデバッグ方法
保存(:w)して実行(:!perl ファイル名)よりもよっぽど楽。時間で自動保存もできるけど、とりあえずこれだけ。
一気に保存して実行する
:w !perl
むしろ私は.vimrcにF4,F5キーに上記のコマンドを割り当てて*1います
.vimrc
":w + !perl command map <F4> :w !perl<CR> "!perl command map <F5> :!perl %<CR>
:compilerで対応しているコンパイラの一覧を確認できます
MacPortsのvim7.2での実行結果 /opt/local/share/vim/vim72/compiler/decada.vim /opt/local/share/vim/vim72/compiler/dot.vim /opt/local/share/vim/vim72/compiler/eruby.vim /opt/local/share/vim/vim72/compiler/fortran_F.vim /opt/local/share/vim/vim72/compiler/fortran_cv.vim /opt/local/share/vim/vim72/compiler/fortran_elf90.vim /opt/local/share/vim/vim72/compiler/fortran_g77.vim /opt/local/share/vim/vim72/compiler/fortran_lf95.vim /opt/local/share/vim/vim72/compiler/fpc.vim /opt/local/share/vim/vim72/compiler/gcc.vim /opt/local/share/vim/vim72/compiler/gnat.vim /opt/local/share/vim/vim72/compiler/hp_acc.vim /opt/local/share/vim/vim72/compiler/icc.vim /opt/local/share/vim/vim72/compiler/intel.vim /opt/local/share/vim/vim72/compiler/irix5_c.vim /opt/local/share/vim/vim72/compiler/irix5_cpp.vim /opt/local/share/vim/vim72/compiler/javac.vim /opt/local/share/vim/vim72/compiler/jikes.vim /opt/local/share/vim/vim72/compiler/mcs.vim /opt/local/share/vim/vim72/compiler/mips_c.vim /opt/local/share/vim/vim72/compiler/mipspro_c89.vim /opt/local/share/vim/vim72/compiler/mipspro_cpp.vim /opt/local/share/vim/vim72/compiler/modelsim_vcom.vim /opt/local/share/vim/vim72/compiler/msvc.vim /opt/local/share/vim/vim72/compiler/neato.vim /opt/local/share/vim/vim72/compiler/onsgmls.vim /opt/local/share/vim/vim72/compiler/pbx.vim /opt/local/share/vim/vim72/compiler/perl.vim /opt/local/share/vim/vim72/compiler/php.vim /opt/local/share/vim/vim72/compiler/pyunit.vim /opt/local/share/vim/vim72/compiler/rspec.vim /opt/local/share/vim/vim72/compiler/rst.vim /opt/local/share/vim/vim72/compiler/ruby.vim /opt/local/share/vim/vim72/compiler/rubyunit.vim /opt/local/share/vim/vim72/compiler/se.vim /opt/local/share/vim/vim72/compiler/splint.vim /opt/local/share/vim/vim72/compiler/tcl.vim /opt/local/share/vim/vim72/compiler/tex.vim /opt/local/share/vim/vim72/compiler/tidy.vim /opt/local/share/vim/vim72/compiler/xmllint.vim /opt/local/share/vim/vim72/compiler/xmlwf.vim
ぱ、Perlだけじゃなくって他の言語にも使えそうですよね。
もっとスマートな方法あれば教えてください><
*1:mapで設定キーがかぶると下にある方が優先されてしまうんですね;