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使いの魔法の杖
