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 :make
et la liste des correctifs.
Qu'est-ce que l'utilisation :make
nous apporte?
L'utilisation vous :make
permet 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 :make
exé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 make
commande qui exécute a Makefile
. Cependant, vous pouvez modifier votre 'makeprg'
via la :compiler
commande ou le définir directement.
Vous pouvez également transmettre des arguments supplémentaires à :make
. par exemple:make clean
Remarque: l'exécution :make
affichera 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é :make
votre 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
/ :cprev
pour passer à l'élément suivant / précédent
:cc
pour imprimer en bas l'erreur actuelle ou :cc 3
pour 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 :make
automatique et silencieuse?
Vous pouvez le faire avec un :autocmd
comme 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 :cwindow
s'il y a des erreurs.
Remarque: devrait être plus spécifique avec ce modèle de fichier sur l' BufWritePost
autocmd 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
:make
tâ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.sh
soit 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, :make
j'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