Ist es möglich, alle übereinstimmenden Zeilen in vi oder Vim anzuzeigen/auszublenden? Nicht hervorheben, sondern nur diese Zeilen anzeigen.
Zum Beispiel habe ich einen Text mit Word das Wort ERROR
. Wie kann ich nur Zeilen anzeigen lassen, die ERROR
enthalten, und wie nur Zeilen ohne ERROR
anzeigen?
Gibt es eine Lösung ohne zu löschen alle passenden Zeilen und dann einfach rückgängig zu machen?
Kennen Sie den :global
-Befehl? Tun das, was Sie wollen?
:g/ERROR
und für das Gegenteil:
:g!/Error
oder gleichwertig:
:v/Error
Ein anderer Ansatz, der von Ihrem Anwendungsfall abhängt, wäre die Verwendung von vimgrep und seiner Ergebnisse in quickfix . Sie können Folgendes tun:
:vimgrep pattern %
durchsucht die aktuelle Datei und führt Sie zum ersten Suchergebnis. Noch wichtiger ist, dass die Ergebnisse in die "Quickfix-Liste" aufgenommen werden.
:copen
öffnet die Quickfix-Liste in einem separaten Quickfix-Fenster. Sie haben also ein separates Fenster mit allen Zeilen Ihres letzten vimgrep. Innerhalb des Quickfix-Fensters können Sie dann die Eingabetaste drücken oder auf eine Zeile doppelklicken, um zur entsprechenden Zeile in Ihrer Originaldatei zu springen.
Mit :colder
können Sie zu älteren Quickfix-Listen (älteren Vimgrep-Ergebnissen) zurückkehren. Und :cnewer
fährt mit neueren Suchergebnissen fort.
Beachten Sie, dass die Quickfix-Liste auch aktualisiert wird, wenn Sie :make
ausführen (weshalb Quickfix zur Behebung von Fehlern aufgerufen wird). Aus diesem Grund gibt es auch eine Alternative zur Quickfix-Liste, die als "Standortliste" bezeichnet wird. Stattdessen verwenden Sie :lvimgrep
und dann l-Präfix-Befehle anstelle von c-Präfix-Befehlen - :lopen
, :lolder
, :lnewer
.
Natürlich können Sie noch viel mehr tun. Siehe :help quickfix
für weitere Informationen.
PS, Sie sagten, Sie wollten keinen Ansatz, der Zeilen löscht und sie dann rückgängig macht. Aber da Sie g/ERROR
als die Antwort markiert haben, dachte ich, ich würde darauf hinweisen, dass ein schneller und schmutziger Weg g!/ERROR/d
ist. Sie können es dann leicht mit u
rückgängig machen. Außerdem können Sie mit :set hlsearch
Muster markieren, die mit :g
-Befehlen übereinstimmen.
Sie können verwenden
:g/ERROR/
um alle Zeilen mit ERROR zu drucken
Es gibt auch ein Vim-Plugin, das ich oft gesehen habe, aber nicht verwendet habe: foldsearch: falten Sie Linien weg, die nicht einem bestimmten Muster entsprechen
Der beste Weg, dies zu tun, ist->
:vimgrep /something/g % | copen
Dadurch wird die Liste der Übereinstimmungen für Ihr Keyword geöffnet. Außerdem werden nur die übereinstimmenden Zeilen im Quickfix-Fenster angezeigt.
:vimgrep /something/g % | copen
funktioniert super. Mit :g/<pattern>/d
können auch Zeilen mit dem Muster gelöscht werden
Sie meinen wahrscheinlich den Befehl in weniger vi vim &/pattern/ zeigt Zeilen an, die/pattern/enthalten (wie grep).
falls Sie fzf
verwenden, können Sie Folgendes verwenden:
:Lines
in allen geöffneten Dateien:BLines
nur im offenen Puffer:Rg [pattern]
mit ripgrep