web-dev-qa-db-fra.com

Passer à l'erreur / code suivant surligné en rouge

Lorsqu'il s'agit de conflits de fusion, il est courant que le >>>>>> et ====== insérés par DCVS sont syntaxiquement incorrects pour le fichier dans lequel je suis et apparaissent en surbrillance rouge. Lorsqu'il s'agit de conflits de fusion, il serait utile d'avoir des commandes pour passer à ces erreurs. Quand je tape :cnext Je reçois juste le message "Aucune erreur". Ce sont des conflits de fusion Mercurial, donc je ne peux pas utiliser Fugitive, mais je préfère généralement modifier les conflits de fusion à la main de toute façon.

Existe-t-il un moyen de passer à la prochaine erreur de syntaxe dans le fichier? Je pense que ces erreurs sont dictées par le fichier de coloration syntaxique.

40
Andy Ray

Vous pouvez utiliser :lopen pour ouvrir une fenêtre contenant des lignes d'erreur/d'avertissement. Après cela, accédez à chacun d'eux.

La vraie réponse est que vous pouvez utiliser :lnext pour passer à l'erreur suivante, ou :lprev, ou ]l et [l (ce sont des L minuscules) si vous avez vim-unimpaired , ce que vous faites, car vous ne devriez pas utiliser Vim sans lui.

Cela ne passera pas au groupe de texte en surbrillance rouge/erreur suivant, mais passera à ce que votre plugin de syntaxe indique comme une erreur (et remplit l'emplacement liste). Il est impossible dans Vim de passer à un groupe de surbrillance spécifique, car personne n'a pris la peine de comprendre comment.

Le plugin SRDispHiGrp se rapproche, mais si vous ne pouviez pas le dire d'après le nom, il est trop compliqué et déroutant pour un usage humain.

56
Nguyen

Je pense que vous étiez sur la bonne voie avec :cnext.

:cnext et :cprevious sont des commandes Vim QuickFix; vous pouvez en profiter en utilisant un plugin de validation de code qui utilise le mode QuickFix, comme pyflakes.vim pour Python, et jslint.vim / jshint.vim pour JavaScript.

Cela se traduira par des erreurs de syntaxe marquées avec des soulignements rouges ondulés, par opposition à l'erreur de syntaxe rouge fixe mettant en évidence je crois que vous voyez. Vous devriez alors pouvoir utiliser :cnext et :cprevious pour passer aux erreurs marquées suivantes et précédentes.

13
bryan