Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用quickfix在Vim中编译Perl_Perl_Vim - Fatal编程技术网

使用quickfix在Vim中编译Perl

使用quickfix在Vim中编译Perl,perl,vim,Perl,Vim,好的,这并不是关于编译,但是最近我在Vim中发现了:compiler命令。该帮助包含在quickfix文档中,据我所知,我可以运行: :compiler perl 选择perl解释器。然后,帮助说: Perl编译器插件实际上并不编译,而是调用Perl的内部 语法检查功能,并分析输出中可能出现的错误,以便 在快速修复模式下更正它们 但是现在还不清楚我到底应该做什么来运行这个程序。即使没有make文件,我也可以运行:make?这对我来说很有意义,因为: echo &makeprg 返回p

好的,这并不是关于编译,但是最近我在Vim中发现了
: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}什么也做不了”。