Компилятор C++ Im, использующий (начинающийся ant), производит ошибки в разных форматах. Например:Vim errorformat несколько записей
[apply] /localdev/foo.cc:10:29: error: foo.h: No such file or directory
(позволяет вызов, что формат А)
и в форматах, таких как:
[apply] /localdev/foo.cc:307: error: expected ';' before 'std'
(назовем, что формат В)
Примечание Формат А имеет дополнительный столбец спецификатор.
Я пытаюсь создать код ошибки vim, который будет соответствовать обоим.
у меня есть:
set errorformat=\ %#[apply]\ %f:%l:%c:\ error:\ %m
set errorformat+=\ %#[apply]\ %f:%l:\ error:\ %m
Но я не могу получить Vim, чтобы соответствовать Format B с этим.
Я знаю, что сам метод errorformat прав, потому что, если я прокомментирую первый параметр errorformat, я могу сопоставить ошибку Format B., и если я прокомментирую второй параметр errorformat, я могу совместить ошибку. Формат A.
Обратите внимание, что если я отменил настройки errorformat, а затем, когда Vim встречает ошибку Format A, он пытается открыть файл под названием «/localdev/foo.cc:10», который, конечно, не найден. (похоже, что vim имеет жадный алгоритм соответствия, а строка, соответствующая файлу, также включает номер строки в этом случае).
Какова правильная настройка формата errorformat, которая будет соответствовать как формату A, так и формату B?
Я просмотрел интернет и документацию vim о том, как сделать% c «необязательным», но я не нашел этого секрета.
спасибо.
не будет добавить ответ, потому что я не понимаю, почему это работает, но если вы замените первоначальный белый узор пространство с '% * \\ s' те сообщения об ошибках. [ссылка] (http://vim.1045645.n5.nabble.com/Need-help-about-CompilerSet-errorformat-td5720668.html) – Vitor