La réponse à votre question directe est exactement comme @EvergreenTree a posté. Cependant, j'ai l'impression que vous manquez un outil intégré de Vim pour la construction / compilation / linting de projets. Plus particulièrement :makeet la liste des correctifs.
Qu'est-ce que l'utilisation :makenous apporte?
L'utilisation vous :makepermet de rassembler vos erreurs dans une liste connue sous le nom de liste de correctifs. En utilisant le quickfix, vous pouvez naviguer entre les erreurs dans vos fichiers, donc vous sautez directement à l'endroit où le compilateur dit que l'erreur est (pratique, non?).
:faire
L' exécution :makeexécutera le programme make, 'makeprg'. Ensuite, analysez la sortie avec 'errorformat'et mettez chaque entrée dans la liste des correctifs.
Par 'makeprg'défaut, la makecommande qui exécute a Makefile. Cependant, vous pouvez modifier votre 'makeprg'via la :compilercommande ou le définir directement.
Vous pouvez également transmettre des arguments supplémentaires à :make. par exemple:make clean
Remarque: l'exécution :makeaffichera souvent la sortie de la commande en bas de l'écran avec une invite demandant d'appuyer sur entrée. Appuyez simplement sur Entrée car toutes les sorties seront disponibles dans la liste des correctifs. Vous pouvez supprimer cela via :silent, par exemple :silent make.
Une commande personnalisée courante pour une marque silencieuse est:
command -nargs=* -bar Smake silent make <args> <bar> cwindow
liste quickfix
Après avoir exécuté :makevotre liste de correctifs, la sortie du compilateur sera conservée.
Utilisez la commande suivante pour parcourir la liste des correctifs.
:copen ouvrir la fenêtre quickfix
:cclose fermer la fenêtre quickfix
:cnext/ :cprevpour passer à l'élément suivant / précédent
:ccpour imprimer en bas l'erreur actuelle ou :cc 3pour afficher une erreur spécifique dans cet exemple 3
Personnellement , je l' utilise de Tim Pope intact plug - in pour naviguer dans la liste des quickfix.
Qu'en est-il de l'exécution :makeautomatique et silencieuse?
Vous pouvez le faire avec un :autocmdcomme vous où.
augroup auto_make
autocmd!
autocmd BufWritePost * silent make
autocmd QuickFixCmdPost *make* cwindow
augroup END
En bonus, j'ai ajouté en ouvrant la fenêtre de correction rapide via :cwindows'il y a des erreurs.
Remarque: devrait être plus spécifique avec ce modèle de fichier sur l' BufWritePostautocmd afin que les fichiers non liés ne soient pas créés.
Il y en a encore plus?!
Cela utilise seulement quelques commandes intégrées de Vim plus quelques autocmd pour convaincre. Il existe bien sûr des plugins et des outils qui pourraient vous aider
- Dispatch.vim peut être utilisé pour exécuter des
:maketâches de manière asynchrone.
- Syntastic plugin syntax checks file after
:write.
- Ale.vim (Asynchronous Lint Engine) est un plugin pour fournir des peluches dans NeoVim et Vim 8 pendant que vous éditez vos fichiers texte.
- Unimpaired.vim facilite la gestion de la liste des correctifs rapides.
- Vieux Makefiles simples. À moins que ce ne
./script.shsoit très compliqué, vous pouvez envisager d'utiliser make. Il peut évoluer pour effectuer plus de tâches plus tard et est un outil de construction courant.
- Vous pouvez utiliser Vim Awesome pour rechercher d'autres plugins qui pourraient vous aider.
Conclusion
Personnellement, :makej'intègre et le quickfix dans mon propre workflow. Je crois que la capture de la sortie de votre processus de construction et la capture des erreurs valent bien l'investissement. En prime, vous deviendrez peut-être plus à l'aise avec la liste des correctifs et pourrez utiliser la liste pour d'autres applications comme :grep.
Pour plus d'aide, voir:
:h :make
:h quickfix
:h 'makeprg'
:h 'errorformat'
:h :compiler
:h :copen
:h :cwindow
:h :cnext
:h :cc