使用quickfix在Vim中编译Perl
好的,这并不是关于编译,但是最近我在Vim中发现了使用quickfix在Vim中编译Perl,perl,vim,Perl,Vim,好的,这并不是关于编译,但是最近我在Vim中发现了:compiler命令。该帮助包含在quickfix文档中,据我所知,我可以运行: :compiler perl 选择perl解释器。然后,帮助说: Perl编译器插件实际上并不编译,而是调用Perl的内部 语法检查功能,并分析输出中可能出现的错误,以便 在快速修复模式下更正它们 但是现在还不清楚我到底应该做什么来运行这个程序。即使没有make文件,我也可以运行:make?这对我来说很有意义,因为: echo &makeprg 返回p
:compiler
命令。该帮助包含在quickfix文档中,据我所知,我可以运行:
:compiler perl
选择perl解释器。然后,帮助说:
Perl编译器插件实际上并不编译,而是调用Perl的内部
语法检查功能,并分析输出中可能出现的错误,以便
在快速修复模式下更正它们
但是现在还不清楚我到底应该做什么来运行这个程序。即使没有make文件,我也可以运行:make
?这对我来说很有意义,因为:
echo &makeprg
返回perl-Wc%
。然而
在伪测试程序上执行此操作,只返回标准错误格式化输出,不打开quickfix窗口。我在这里遗漏了什么?只需用
:copen
使用导航错误
:crew
:cnext
:cprev
请注意,使用非项目make(即makeprg变量通常包括当前缓冲区的名称(扩展
%
)进行快速修复的常见陷阱是,当焦点位于快速修复窗口上时,再次发出:make
将失败,因为快速修复缓冲区没有与其关联的文件名。也许可以通过使用以下代码为quickfix窗口提供一个人工名称来解决这个问题,例如vim的Perl编译器模式?,F6可以运行Perl脚本并在quickfix上显示
func! checkPerlSyntax()
let map = &makeprg
let ef = &errorformat
let exeFile = expand("%:t")
setlocal makeprg=perl
set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
silent make %
copen
let &makeprg = mp
let &errorformat = ef
endfunc
nmap pl :!perl %<.pl<CR>
map <F6> :call checkPerlSyntax()<CR>
func!checkPerlSyntax()
让map=&makeprg
设ef=&errorformat
让exeFile=展开(“%:t”)
setlocalmakeprg=perl
设置efm=%C\%.%\\\,%A\\File\\%f\“\\,\line\%l%.%\\,%Z%[%^\]%\@=%m
无声制造%
科本
let&makeprg=mp
let&errorformat=ef
endfunc
nmap pl:!perl%提出的问题很好。感谢您提供您所知道的和您所需要的详细信息tried@sehe:谢谢你的回答!我只是在问之前做了我的调查工作。啊,显然,如果我想看到quickfix窗口,我必须打开它。关于%
扩展,感谢您指出。实际上,我首先想到的是在../compilers/perl.vim
中包含一些内容,但我认为不可能命名quickfix窗口。我尝试传递#
以使其成为参数,很明显,%
扩展为空,但也不起作用。它说“对{perlfile}什么也做不了”。