Ответ на ваш прямой вопрос так же, как @EvergreenTree опубликовал. Однако я чувствую, что вам не хватает некоторых встроенных инструментов Vim для создания / компиляции / линтинга проектов. В частности, :makeсписок быстрых исправлений.
Что дает :makeнам использование?
Использование :makeпозволяет собирать ошибки в список, известный как список быстрых исправлений. Используя быстрое исправление, вы можете перемещаться между ошибками в ваших файлах, поэтому вы переходите прямо туда, где компилятор говорит об ошибке (удобно, правда?).
:сделать
Запуск :makeвыполнит программу make 'makeprg'. Затем проанализируйте вывод с помощью 'errorformat'и поместите каждую запись в список быстрых исправлений.
Обычно по 'makeprg'умолчанию используется makeкоманда, которая запускает Makefile. Однако вы можете изменить свой с 'makeprg'помощью :compilerкоманды или установить его непосредственно.
Вы также можете передать дополнительные аргументы :make. например:make clean
Примечание: во время выполнения :makeчасто вывод команды выводится внизу экрана с приглашением нажать клавишу ввода. Просто нажмите Enter, поскольку все выходные данные будут доступны в списке быстрых исправлений. Вы можете подавить это через :silent, например :silent make.
Обычная настраиваемая команда для автоматической сборки:
command -nargs=* -bar Smake silent make <args> <bar> cwindow
список быстрых исправлений
После того, как вы запустите :makeваш список быстрых исправлений, будет храниться вывод компилятора.
Используйте следующую команду для навигации по списку быстрых исправлений.
:copen открыть окно быстрого исправления
:cclose закрыть окно быстрого исправления
:cnext/ :cprevдля перехода к следующему / предыдущему элементу
:ccраспечатать внизу текущую ошибку или :cc 3показать конкретную ошибку в этом примере 3
Лично я использую Тима папы неразделенного плагин для перемещения по списку QuickFix.
А как насчет :makeавтоматического и бесшумного запуска ?
Вы можете сделать это с таким :autocmdже, как вы, где.
augroup auto_make
autocmd!
autocmd BufWritePost * silent make
autocmd QuickFixCmdPost *make* cwindow
augroup END
В качестве бонуса я добавил при открытии окна быстрого исправления через, :cwindowесли есть какие-либо ошибки присутствуют.
Примечание: должен быть более конкретным с этим шаблоном файла на BufWritePostautocmd, чтобы не связанные файлы не создавались.
Там еще больше ?!
Это использует только несколько встроенных команд Vim плюс несколько autocmd для убеждения. Есть, конечно, плагины и инструменты, которые могут помочь вам
- Dispatch.vim может использоваться для
:makeасинхронного запуска заданий.
- Синтаксический плагин проверяет файл после
:write.
- Ale.vim (Asynchronous Lint Engine) - это плагин для обеспечения линтинга в NeoVim и Vim 8 во время редактирования текстовых файлов.
- Unimpaired.vim упрощает управление списком быстрых исправлений.
- Обычные старые Makefiles. Если вы
./script.shне очень сложны, вы можете попробовать использовать make. Он может масштабировать и выполнять больше задач позже и является распространенным инструментом построения.
- Вы можете использовать Vim Awesome для поиска дополнительных плагинов, которые могут помочь.
Вывод
Лично я интегрирую :makeи быстрое исправление в свой рабочий процесс. Я считаю, что захват результатов вашего процесса сборки и фиксация ошибок окупаются. В качестве дополнительного бонуса вам, возможно, станет удобнее использовать список быстрых исправлений, и вы сможете использовать этот список для других приложений, например :grep.
Для получения дополнительной помощи см .:
:h :make
:h quickfix
:h 'makeprg'
:h 'errorformat'
:h :compiler
:h :copen
:h :cwindow
:h :cnext
:h :cc