Masquer toutes les lignes correspondantes dans Vim

Est-il possible d’afficher / masquer toutes les lignes correspondantes dans vi ou vim? Ne mettez pas en évidence mais montrez seulement ces lignes.

Par exemple, j’ai un texte avec le mot ERROR . Comment puis-je lui faire afficher uniquement les lignes contenant ERROR et comment afficher uniquement les lignes sans ERROR ?

Existe-t-il une solution sans supprimer toutes les lignes correspondantes et ensuite la supprimer ?

Connaissez-vous la commande :global ? Est-ce que ça fait ce que tu veux?

 :g/ERROR 

et pour le contraire:

 :g!/Error 

ou équivalent:

 :v/Error 

Une autre approche en fonction de votre cas d’utilisation consisterait à utiliser vimgrep et ses résultats dans quickfix . Vous pouvez effectuer les opérations suivantes:

:vimgrep pattern % va rechercher le fichier en cours et vous amener au premier résultat de recherche. Plus important encore, il place les résultats dans la “liste de correctifs”.

:copen ouvre alors la liste de correctifs dans une fenêtre de correction rapide distincte. Donc, vous aurez une fenêtre séparée avec toutes les lignes de votre dernier vimgrep. Dans la fenêtre de correction rapide, vous pouvez ensuite appuyer sur Entrée ou double-cliquer sur une ligne pour accéder à la ligne correspondante dans votre fichier d’origine.

:colder vous permettra de revenir aux anciennes listes de quickfix (résultats vimgrep plus anciens). Et :cnewer passe aux résultats de recherche les plus récents.

Notez que la liste de correctifs est également mise à jour lors de l’exécution :make (c’est pourquoi on l’appelle quickfix pour corriger les erreurs). Pour cette raison, il existe également une alternative à la liste de correctifs appelée “liste de lieux”. Pour l’utiliser à la place, utilisez :lvimgrep , puis utilisez des commandes avec préfixe l plutôt que des commandes avec préfixe c – :lopen :lolder :lnewer .

Il y a bien sûr beaucoup plus à faire. Voir :help quickfix pour plus d’informations.

PS, vous avez dit que vous ne vouliez pas une approche qui supprime les lignes et ensuite les défaites. Mais puisque vous avez marqué g/ERROR comme réponse, je pensais que le moyen le plus rapide était de faire g!/ERROR/d . Vous pouvez alors facilement le défaire en utilisant u . Aussi, FYI, vous pouvez le faire :set hlsearch pour mettre en évidence les motifs associés aux commandes :g .

Vous pouvez utiliser

 :g/ERROR/ 

imprimer toutes les lignes avec ERROR

Il y a aussi un plugin Vim que j’ai vu plusieurs fois mais qui n’a pas utilisé: foldsearch: repliez les lignes qui ne correspondent pas à un pattern donné

La meilleure façon de le faire est->

 :vimgrep /something/g % | copen 

Cela ouvrira la liste des correspondances pour votre mot-clé et affichera uniquement les lignes correspondantes dans la fenêtre de correctif.

Vous voulez probablement dire commande dans moins de vi & v / & pattern / qui montre des lignes contenant / pattern / (comme grep).