web-dev-qa-db-fra.com

Comment utilisez-vous la fonction quickfix de vim?

Je suis un nouvel utilisateur de Vim et j'ai trouvé que sa courbe d'apprentissage est assez abrupte (du moins pour moi). Je viens d'installer ce script vim pour la vérification des erreurs JavaScriptLint, qui montre les erreurs dans la fenêtre de correction rapide de vim une fois que j'ai enregistré un tampon.

Cependant, je ne sais pas quoi faire ensuite. Comment faire défiler toutes les erreurs? Comment fermer la "fenêtre" de quickfix? Comment puis-je l'obtenir pour vérifier les erreurs après avoir apporté des modifications à mon code?

J'ai regardé les documents vim quickfix mais la quantité de commandes est écrasante et je n'arrive pas à trouver ce que je veux. Toute aide serait appréciée.

Une question secondaire: existe-t-il un moyen pour que javascriptlint vérifie les erreurs js pour le code résidant dans un fichier .html?

Merci!

106
hora

Il y a beaucoup de commandes pour quickfix comme vous l'avez dit, mais j'ai tendance à trouver que j'en utilise seulement un petit sous-ensemble:

:copen " Open the quickfix window
:ccl   " Close it
:cw    " Open it if there are "errors", close it otherwise (some people prefer this)
:cn    " Go to the next error in the window
:cnf   " Go to the first error in the next file

J'ai tendance à utiliser cela avec :make Et :vimgrep, Donc je ne peux pas commenter le vérificateur de charpie Javascript, mais cela devrait vous donner quelque chose pour commencer.

En ce qui concerne l'utilisation générale de JavascriptLint, je ne suis pas un programmeur javascript, mais il semble que le script expose une fonction appelée "JavascriptLint", donc si vous voulez l'appeler manuellement, vous pouvez utiliser :call JavascriptLint(). Cependant, cela fonctionne sur la copie disque du fichier, il faudra donc d'abord l'enregistrer. Si (et seulement si) la ligne de commande jsl fonctionne sur les fichiers html, vous devriez pouvoir utiliser :call JavascriptLint() sur un fichier html pour vérifier le javascript interne. Vous pourriez également faire:

autocmd BufWritePost,FileWritePost *.html call JavascriptLint()

pour l'automatiser. Si jsl ne prend pas en charge les fichiers html, alors (à moins de patcher l'application ou de demander à l'auteur de la changer), c'est probablement une cause perdue ...

129
DrAl

La façon la plus simple de naviguer dans la liste des correctifs (ou la liste des emplacements, d'ailleurs) est le plugin unimpaired .

Une fois la fenêtre de correction rapide remplie, [q et ]q avancer et reculer (respectivement) dans la liste des correctifs. [Q et ]Q aller au début et à la fin (ce qui est particulièrement pratique si vous n'avez qu'un seul élément dans la liste; cela fait que vim se plaint de [q et ]q). Le workflow est donc:

  1. Exécutez la commande qui remplit la liste des correctifs
  2. Tapez [Q pour accéder au premier élément
  3. Faites défiler les éléments suivants (le cas échéant) avec [q et ]q

Si vous utilisez Syntastic, vous obtiendrez la liste des emplacements au lieu de la liste des correctifs. Aucun problème; utilisez simplement [L, ]L, [l, et ]l de la même manière.

unimpaired a aussi plein d'autres mappages pratiques - [e et ]e "bulles" de haut en bas, [<Space> et ]<Space> insérer des lignes vides au-dessus et au-dessous, etc. J'ai été surpris que personne ne l'ait mentionné ici auparavant; c'est probablement parce qu'il n'existait qu'en janvier 2010, bien que la question ait été posée en 2009.

54
Chip Hogg

Vous pouvez aussi utiliser :cc 2 (ou tout autre numéro) pour accéder, dans ce cas, à la deuxième erreur dans la fenêtre de correction rapide. Naviguer avec :cn, :cc 4, etc. placera le curseur sur la ligne en question.

19
Andy Stewart

Mettez les deux lignes suivantes dans votre fichier .vimrc:

map <C-j> :cn<CR>
map <C-k> :cp<CR>

Vous pouvez maintenant parcourir les erreurs à l'aide de ctrl-j et ctrl-k, qui imite les commandes de mouvement standard vers le bas et vers le haut j et k.

19
Amit Moscovich

La meilleure façon d'intégrer la vérification de la syntaxe JavaScript est d'utiliser le plugin Syntastic Vim , qui utilise l'emplacement de Vim- list (qui est parallèle à la fenêtre quickfix ).

J'ai écrit des réponses pour cette question et cette question expliquant comment le faire, ainsi que comment obtenir la navigation dans le code source/liste de balises pour Vim utilisant la communauté jshint.com (ce qui est bien meilleur que JSLint IMO) et Mozilla DoctorJS (anciennement jsctags ).

8
Ory Band

la fenêtre quickfix fonctionne principalement comme n'importe quelle autre fenêtre vim: j en bas d'une ligne, k en haut d'une ligne,: cn pour passer à l'erreur/avertissement suivant, etc.

expérience!

6
just somebody

Peut-être que cette option n'existait pas lorsque cette question a été écrite (ou peut-être que je me gêne parce qu'il y a quelque chose dans mon .vimrc cela rend cela possible) mais quand j'obtiens un Quickfix List, Je le navigue simplement avec j et k puis je tape <CR> (c'est-à-dire la touche Entrée) pour accéder à cet emplacement dans le fichier.

Ensuite, pour revenir à la Quickfix List Je tape Ctrl + Wj pour "descendre d'une fenêtre" et je suis de retour.

Enfin, quand j'ai fini, je tape simplement :q, comme je voudrais fermer une fenêtre normale.

6
LondonRob

En plus de @DrAl, une excellente réponse sur la façon d'ouvrir et de fermer la fenêtre rapide et de naviguer entre les entrées, j'ai créé une image pour montrer certaines des autres commandes de navigation de correction rapide.

Chaque groupe de 3 fichiers ci-dessous représente un ensemble de résultats de correction rapide, par ex. d'un vimgrep. cnewer et froids sont pour passer par des ensembles de résultats historiques. enter image description here

1
run_the_race