Est-il possible d'afficher/masquer toutes les lignes correspondantes dans vi ou Vim? Ne pas mettre en évidence mais montrer seulement ces lignes.
Par exemple, j'ai un texte avec Word le mot ERROR
. Comment faire en sorte qu'il affiche 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 l'annuler?
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 serait d'utiliser vimgrep et ses résultats dans quickfix . Vous pouvez faire ce qui suit:
:vimgrep pattern %
va rechercher le fichier actuel et vous amène au premier résultat de la recherche. Plus important encore, il place également les résultats dans la "liste des correctifs rapides".
:copen
ouvrira ensuite la liste des correctifs dans une fenêtre distincte de correctif. Ainsi, 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 de votre fichier d'origine.
:colder
vous permettra de revenir aux anciennes listes de correctifs (anciens résultats de vimgrep). Et :cnewer
affiche les résultats de recherche les plus récents.
Notez que la liste de correctifs est également mise à jour lors de l’exécution de :make
(c’est pourquoi on appelle son correctif pour corriger les erreurs). Pour cette raison, il existe également une alternative à la liste de correctifs appelée "liste d'emplacement". Pour l'utiliser, utilisez plutôt :lvimgrep
, puis des commandes à préfixe l plutôt que des commandes à préfixe c: :lopen
, :lolder
, :lnewer
.
Bien sûr, vous pouvez faire beaucoup plus. Voir :help quickfix
pour plus d'informations.
PS, vous avez dit que vous ne souhaitiez pas une approche qui supprime les lignes, puis les annule. Mais puisque vous avez marqué g/ERROR
comme réponse, j’ai pensé que je ferais remarquer une manière rapide et sale de faire g!/ERROR/d
. Vous pouvez ensuite facilement l'annuler en utilisant u
. Également pour votre information, vous pouvez utiliser :set hlsearch
pour mettre en surbrillance 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 que je n'ai pas utilisé: foldsearch: plie les lignes qui ne correspondent pas à un modèle donné
La meilleure façon de 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 correction rapide.
:vimgrep /something/g % | copen
fonctionne à merveille. De plus, :g/<pattern>/d
peut être utilisé pour supprimer des lignes avec le motif
Vous voulez probablement dire la commande dans moins vi vim &/pattern/ qui montre les lignes contenant/pattern/(comme grep).
au cas où vous utiliseriez fzf
, vous pourriez utiliser:
:Lines
dans tous les fichiers ouverts:BLines
uniquement dans un tampon ouvert:Rg [pattern]
en utilisant ripgrep