как установить makeprg в vim, когда ваша система сборки компилирует скопированную версию кода - PullRequest
3 голосов
/ 11 марта 2011

Я использую встроенную команду make vim, чтобы помочь с циклом сборки, исправления и повторения на работе. Мы находимся в процессе перехода на новую систему сборки, которую я легко могу использовать на makeprg.

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

Можно ли как-то исправить это, сообщив vim, каков мой путь к коду?

1 Ответ

5 голосов
/ 11 марта 2011

Существует как минимум три стратегии, которые вы могли бы использовать для исправления этой проблемы, к сожалению, все они потребуют немного больше работы, чем просто указание vim «пути кода». Прежде чем выбрать один, я бы порекомендовал прочитать :help make_makeprg, чтобы лучше понять процесс :make "под капотом".

  1. Напишите сценарий shell / perl / ruby ​​/ любой другой, который фильтрует выходные данные вашего процесса сборки и переписывает имена файлов с /sandbox/src/blah.c до src/blah.c или /sandbox/src до src в зависимости от ситуации. Затем измените makeprg, чтобы включить программу фильтра при запуске make (в вашем .vimrc добавьте это: :set makeprg=make\ \\\|\ filter). Это, вероятно, довольно легко сделать, но может быть сложнее в зависимости от того, какую именно систему сборки вы используете.

  2. Измените errorformat (см. :help errorformat), чтобы удалить префикс песочницы для вас. Это может быть невозможно в некоторых случаях, в зависимости от точного формата вывода из вашей системы сборки.

  3. Добавьте автокоманду QuickFixCmdPost, которая перезапишет пути к файлам в окне быстрого исправления, прежде чем вы начнете использовать :cnext и друзей. Если вы раньше не использовали функцию автокоманды Vim, я бы сначала попробовал две другие стратегии. Они мощные и очень полезные, но они требуют некоторой практики, чтобы получить право.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...