Odpowiedź na twoje bezpośrednie pytanie jest taka, jak na @EvergreenTree. Jednak wydaje mi się, że brakuje Ci niektórych wbudowanych narzędzi Vima do budowania / kompilowania / lintowania projektów. Przede wszystkim :makelista szybkich poprawek.
Co daje :makenam korzystanie?
Używanie :makepozwala zebrać błędy na listę zwaną listą szybkich poprawek. Za pomocą tej poprawki możesz nawigować między błędami w swoich plikach, więc przeskakujesz od razu do miejsca, w którym kompilator mówi, że błąd (przydatny, prawda?).
:robić
Uruchomiony :makezostanie wykonany program make, 'makeprg'. Następnie przeanalizuj dane wyjściowe za pomocą 'errorformat'i umieść każdy wpis na liście szybkich poprawek.
Zazwyczaj 'makeprg'domyślna jest makekomenda, która uruchamia a Makefile. Jednak można zmienić 'makeprg'za pomocą :compilerpolecenia lub ustawić go bezpośrednio.
Możesz także przekazać dodatkowe argumenty :make. na przykład:make clean
Uwaga: Uruchomienie :makeczęsto pokazuje wynik polecenia na dole ekranu z monitem o naciśnięcie Enter. Wystarczy nacisnąć Enter, ponieważ wszystkie dane wyjściowe będą dostępne na liście szybkich poprawek. Możesz to stłumić za pomocą :silentnp :silent make.
Typowym niestandardowym poleceniem dla cichego wykonania jest:
command -nargs=* -bar Smake silent make <args> <bar> cwindow
lista szybkich poprawek
Po uruchomieniu :makelista poprawek będzie zawierać dane wyjściowe kompilatora.
Użyj następującego polecenia, aby poruszać się po liście poprawek.
:copen aby otworzyć okno poprawki
:cclose aby zamknąć okno poprawki
:cnext/, :cprevaby przejść do następnego / poprzedniego elementu
:ccaby wydrukować na dole aktualny błąd lub :cc 3pokazać konkretny błąd w tym przykładzie 3
Osobiście korzystam z nieuszkodzonej wtyczki Tima Pope'a, aby poruszać się po liście poprawek.
Co powiesz na :makeautomatyczne i ciche działanie?
Możesz to zrobić z :autocmddokładnie tak jak ty.
augroup auto_make
autocmd!
autocmd BufWritePost * silent make
autocmd QuickFixCmdPost *make* cwindow
augroup END
Jako bonus dodałem, otwierając okno szybkiej poprawki przez, :cwindowjeśli występują jakieś błędy.
Uwaga: Powinny być bardziej szczegółowe z tym wzorcem pliku na BufWritePostautocmd, aby niepowiązane pliki nie budowały się.
Jest jeszcze więcej ?!
Wykorzystuje tylko kilka wbudowanych poleceń Vima oraz kilka autocmd do przekonania. Istnieją oczywiście wtyczki i narzędzia, które mogą ci pomóc
- Dispatch.vim może służyć do
:makeasynchronicznego uruchamiania zadań.
- Składnia wtyczek syntastycznych sprawdza plik po
:write.
- Ale.vim (Asynchronous Lint Engine) to wtyczka zapewniająca przechwytywanie w NeoVim i Vim 8 podczas edycji plików tekstowych.
- Unimpaired.vim ułatwia zarządzanie listą poprawek.
- Zwykłe stare pliki makefile. Chyba że
./script.shjest to bardzo skomplikowane, możesz rozważyć użycie make. Może skalować wykonać więcej zadań później i jest popularnym narzędziem do budowania.
- Możesz użyć Vim Awesome, aby wyszukać więcej wtyczek, które mogą pomóc.
Wniosek
Osobiście integruję :makei poprawkę do własnego przepływu pracy. Wierzę, że uchwycenie wyników procesu kompilacji i błędów jest warte inwestycji. Jako dodatkowy bonus, prawdopodobnie poczujesz się bardziej komfortowo z listą szybkich poprawek i możesz używać tej listy do innych aplikacji, takich jak :grep.
Aby uzyskać więcej pomocy, zobacz:
:h :make
:h quickfix
:h 'makeprg'
:h 'errorformat'
:h :compiler
:h :copen
:h :cwindow
:h :cnext
:h :cc