VimでPerlを扱うプラグイン
投稿:2015-10-18
Perlのソースを書いていて、Lint後に即実行したくなったのでプラグインを作りました。
今まで「:w」→「:!perl -MO=Lint %」→「:!perl %」を履歴から探してましたが、最近はそれすら面倒になってきました(笑)
【注意】元々VimのプラグインにPerl用のがあるので、それが上手く動作する人には不要だと思います。→vim compiler perl - Google 検索
今まで「:w」→「:!perl -MO=Lint %」→「:!perl %」を履歴から探してましたが、最近はそれすら面倒になってきました(笑)
【注意】元々VimのプラグインにPerl用のがあるので、それが上手く動作する人には不要だと思います。→vim compiler perl - Google 検索
Perlソースを書き込むと同時にLintが走り、Perlを実行できる場合は確認メッセージでOKをクリック(スペースバー可)で実行します。
実行できないエラーがあればVimに戻ります。
実行できないエラーがあればVimに戻ります。
ファイルperllintrun.vimを作ります。
" PerlをLintして実行 " Version: 1.0 " Author: lemorin_jp <@lemorin_jp> " License: VIM LICENSE if exists('g:loaded_perllintrun') finish endif let g:loaded_perllintrun = 1 let s:save_cpo = &cpo set cpo&vim :scriptencoding utf8 command! -bar PerlLintRun call perllintrun#perllintrun() let &cpo = s:save_cpo unlet s:save_cpo
ファイルperllintrun.vimを作ります。
" PerlをLintして実行 " Version: 1.0 " Author: lemorin_jp <@lemorin_jp> " License: VIM LICENSE let s:save_cpo = &cpo set cpo&vim scriptencoding utf8 " Lintと実行 function! perllintrun#lintrun() execute '!perl -MO=Lint %' if !v:shell_error let choice = confirm("Lintが成功しました。実行しますか?", "(&y)はい\n(&n)いいえ", 1, "Question") if 1 == choice execute '!perl %' endif endif endfunction " プラグイン使用開始 function! perllintrun#perllintrun() command! -bar PLR call perllintrun#lintrun() augroup perllintrun#Preview autocmd! autocmd BufWritePost *.pl call perllintrun#lintrun() autocmd BufWritePost *.pm call perllintrun#lintrun() augroup END endfunction let &cpo = s:save_cpo unlet s:save_cpo
Vimを起動後、「:PerlLintRun」を実行すると有効になります。
ソースを書き替えずに再実行する場合は「:PLR(Perl Lint Runの略)」です。
ソースを書き替えずに再実行する場合は「:PLR(Perl Lint Runの略)」です。
この本で勉強しました。
書籍案内:Vim scriptテクニックバイブル ~Vim使いの魔法の杖
書籍案内:Vim scriptテクニックバイブル ~Vim使いの魔法の杖