Я использую vim для кодирования. Когда мне нужно скомпилировать текущий файл, в настоящее время я использую :!g++ % && ./a.out
или :make
.
Отображаемые ошибки/выходные данные исчезают, когда я нажимаю Enter и возвращаюсь к файлу. Я хочу, чтобы ошибки и вывод отображались в вертикальном разрезе сбоку. Было бы неплохо, если потоки вывода и ошибок будут в отдельных буферах. Как это может быть сделано?
Ошибки и выходной буфер должны быть обновлены при компиляции снова и не должны создавать новые буферы.
Как это можно сделать? некоторые vim pluggin/function? или oneliner: P?
Как запустить make в vim и открыть результаты в разделенном окне?
Ответ 1
oneliner:
:make | copen
См. http://vimdoc.sourceforge.net/htmldoc/quickfix.html#quickfix-window
Ответ 2
Если вы хотите скомпилировать и запустить, если компиляция выполнена успешно. (т.е. !g++ % && ./a.out
)
Создайте оболочки script со следующей строкой,
g++ $1 -o /tmp/a.out && /tmp/a.out
Теперь установите makeprg следующим образом.
set makeprg=compileNrun.sh\ %
Невозможно установить всю команду непосредственно как makeprg из-за &&
.
Если он установлен непосредственно в makeprg, указанная выше команда будет расширена до
!g++ file.C -o /tmp/a.out && /tmp/a.out 2>&1 | tee /tmp/errorFile
Следовательно, ошибки компиляции не будут перенаправлены в файл ошибки, если компиляция не выполнена, P как &&
имеет приоритет над |