使用quickfix在Vim中编译Perl

时间:2011-04-25 13:42:30

标签: perl vim

好的,这不是关于完全编译,但最近我在Vim中发现了:compiler命令。帮助包含在quickfix文档中,并且正如我所理解的那样,我可以运行:

:compiler perl

选择perl解释器。然后,帮助说:

  

Perl编译器插件实际上并不编译,而是调用Perl的内部     语法检查功能并解析输出以查找可能的错误,以便您可以     在快速修复模式下纠正它们。

但由于目前还不清楚我应该如何实际运行该程序。即使没有make文件,我也可以运行:make吗?这对我来说很有意义,因为:

echo &makeprg

返回perl -Wc %。然而...

在虚假测试程序上执行此操作,仅返回标准错误格式输出,不会打开quickfix窗口。我在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

只需使用

打开quickfix窗口即可
:copen

使用

导航错误
:crew
:cnext
:cprev

请注意,使用非项目 make进行快速修复的常见陷阱(即makeprg变量通常包含当前缓冲区的名称(%的扩展名))是当焦点在quickfix窗口上时,再次发出:make将失败,因为quickfix缓冲区没有与之关联的文件名。 也许这可以通过为例如quickfix窗口提供一个人工名称来解决。 vim的Perl编译器模式?

答案 1 :(得分:1)

使用以下代码,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>