Est-il possible d'afficher / masquer toutes les lignes correspondantes dans vi ou Vim? Ne mettez pas en surbrillance mais affichez simplement ces lignes
Par exemple, j'ai un texte avec le mot le mot ERROR
. Comment faire pour qu'il n'affiche que les lignes contenant ERROR
et comment afficher uniquement les lignes sans ERROR
?
Existe-t-il une solution sans supprimer toutes les lignes correspondantes, puis simplement l'annuler?
Réponses:
Connaissez-vous la
:global
commande? Est-ce que cela fait ce que vous voulez?et pour le contraire:
ou équivalent:
la source
g<
pour voir à nouveau, ou@:
si vous n'avez pas exécuter et commandes.Une autre approche en fonction de votre cas d'utilisation consisterait à utiliser vimgrep et ses résultats dans quickfix . Vous pouvez faire ce qui suit:
:vimgrep pattern %
recherchera le fichier actuel et vous amènera au premier résultat de la recherche. Plus important encore, il met également les résultats dans la "liste des correctifs rapides".:copen
ouvrira alors la liste des correctifs rapides dans une fenêtre de correction rapide distincte. Vous aurez donc 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 sauter à la ligne correspondante dans votre fichier d'origine.:colder
vous permettra de revenir aux anciennes listes de correctifs rapides (anciens résultats de vimgrep). Et:cnewer
passe aux résultats de recherche plus récents.Notez que la liste des correctifs rapides est également mise à jour lors de l'exécution
:make
(c'est pourquoi elle est appelée correction rapide pour corriger les erreurs). Pour cette raison, il existe également une alternative à la liste de correctifs rapides appelée "liste des emplacements". Pour l' utiliser , vous utilisez à la place:lvimgrep
, utilisez les commandes préfixé l plutôt que des commandes c préfixée -:lopen
,:lolder
,:lnewer
.Il y a, bien sûr, beaucoup plus que vous pouvez faire. Voir
:help quickfix
pour plus d'informations.PS, vous avez dit que vous ne vouliez pas d'une approche qui supprime les lignes puis les annule. Mais puisque vous avez marqué
g/ERROR
comme réponse, j'ai pensé que je voudrais souligner une manière rapide et sale de le faireg!/ERROR/d
. Vous pouvez ensuite l'annuler facilement en utilisantu
. Aussi FYI, vous pouvez faire:set hlsearch
pour mettre en évidence les motifs correspondant aux:g
commandes.la source
Vous pouvez utiliser
pour imprimer toutes les lignes avec ERREUR
Il y a aussi un plugin Vim que j'ai vu plusieurs fois mais que je n'ai pas utilisé: foldsearch: replie les lignes qui ne correspondent pas à un modèle donné
la source
La meilleure façon de procéder est->
Cela ouvrira la liste des correspondances pour votre mot-clé et affichera également uniquement les lignes correspondantes dans la fenêtre de correction rapide.
Remplacez% par le chemin du fichier si vous ne prenez pas en compte le fichier actuel.
la source
:vimgrep /something/g % | copen
fonctionne à merveille.:g/<pattern>/d
Peut également être utilisé pour supprimer des lignes avec le motifla source
au cas où vous utiliseriez,
fzf
vous pouvez utiliser::Lines
dans tous les fichiers ouverts:BLines
uniquement dans le tampon ouvert:Rg [pattern]
en utilisantripgrep
la source
Une manière sale et hackeuse de faire cela:
la source
Vous voulez probablement dire commande en moins vi vim & / pattern / qui montre les lignes contenant / pattern / (comme grep).
la source