Компиляция Perl в Vim с помощью быстрого исправления - PullRequest
5 голосов
/ 25 апреля 2011

Хорошо, речь не идет о компиляции, но недавно я обнаружил команду :compiler в Vim.Справка включена в документацию по быстрым исправлениям, и, насколько я понял, я могу запустить:

:compiler perl

Чтобы выбрать интерпретатор perl.Затем в справке говорится:

Плагин компилятора Perl фактически не компилируется, но вызывает встроенную функцию проверки синтаксиса Perl и анализирует выходные данные на предмет возможных ошибок, чтобы вы могли исправить их в режиме быстрого исправления.

Но так как неясно, что я должен на самом деле запустить программу.Могу ли я запустить :make, даже без файла make?Это имеет смысл для меня, так как:

echo &makeprg

Возвращает perl -Wc %.Однако…

В случае фиктивной тестовой программы возвращаются только стандартные выходные данные форматирования ошибок, окно быстрого исправления не открывается.Что мне здесь не хватает?

Ответы [ 2 ]

4 голосов
/ 25 апреля 2011

Просто откройте окно быстрого исправления с помощью

:copen

Перейдите к ошибкам с помощью

:crew
:cnext
:cprev

Обратите внимание, что обычная ловушка с быстрым исправлением с использованием не-проект make (т. е. когда переменная makeprg обычно включает имя текущего буфера (расширение %)) заключается в том, что, когда фокус находится на окне быстрого исправления, повторный вызов :make не будет выполнен, поскольку буфер быстрого исправления не имеетимя файла, связанное с ним. Возможно, это можно исправить, указав искусственное имя для окна быстрого исправления, например, в режиме компилятора Perl для vim?

1 голос
/ 17 апреля 2012

Используя следующий код, и F6 может запускать Perl-скрипт и показывается в режиме быстрого исправления.

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...