Ist es möglich, alle übereinstimmenden Zeilen in vi oder Vim ein- / auszublenden? Nicht hervorheben, sondern nur diese Linien anzeigen.
Zum Beispiel habe ich einen Text mit Wort das Wort ERROR
. Wie kann ich dafür sorgen, dass nur Zeilen angezeigt werden, die enthalten, ERROR
und wie werden nur Zeilen ohne ERROR
angezeigt?
Gibt es eine Lösung, ohne alle übereinstimmenden Zeilen zu löschen und sie dann einfach rückgängig zu machen?
Antworten:
Kennen Sie den
:global
Befehl? Macht das was du willst?und für das Gegenteil:
oder gleichwertig:
quelle
g<
, um erneut zu sehen, oder@:
wenn Sie nicht ausgeführt haben und Befehle.Ein anderer Ansatz, der von Ihrem Anwendungsfall abhängt, ist die Verwendung von vimgrep und dessen Ergebnissen in Quickfix . Sie können Folgendes tun:
:vimgrep pattern %
durchsucht die aktuelle Datei und bringt Sie zum ersten Suchergebnis. Noch wichtiger ist, dass die Ergebnisse auch in die "Quickfix-Liste" aufgenommen werden.:copen
öffnet dann 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.:colder
Hiermit können Sie zu älteren Quickfix-Listen zurückkehren (ältere vimgrep-Ergebnisse). Und:cnewer
geht weiter zu neueren Suchergebnissen.Beachten Sie, dass die Quickfix-Liste auch beim Ausführen aktualisiert wird
:make
(weshalb sie als Quickfix zur Fehlerbehebung bezeichnet wird). Aus diesem Grund gibt es auch eine Alternative zur Quickfix-Liste, die als "Standortliste" bezeichnet wird. Um es zu nutzen , anstatt verwenden Sie:lvimgrep
, dann l-Präfix - Befehle anstatt c-Präfix - Befehle zur Verfügung -: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, bei dem Zeilen gelöscht und dann rückgängig gemacht werden. Aber da Sie
g/ERROR
als Antwort markiert haben, dachte ich, ich würde darauf hinweisen, dass ein schneller und schmutziger Weg zu tun istg!/ERROR/d
. Sie können es dann einfach mit rückgängig machenu
. Zu Ihrer Information können Sie auch:set hlsearch
Muster hervorheben, die mit:g
Befehlen übereinstimmen .quelle
Sie können verwenden
um alle Zeilen mit ERROR zu drucken
Es gibt auch ein Vim-Plugin, das ich oft gesehen, aber nicht verwendet habe: foldsearch: Falten Sie Linien weg, die nicht zu einem bestimmten Muster passen
quelle
Der beste Weg, dies zu tun, ist->
Dadurch wird die Liste der Übereinstimmungen für Ihr Keyword geöffnet und nur die übereinstimmenden Zeilen im Quickfix-Fenster angezeigt.
Ersetzen Sie% durch den Pfad zur Datei, wenn Sie die aktuelle Datei nicht berücksichtigen.
quelle
:vimgrep /something/g % | copen
funktioniert super. Auch:g/<pattern>/d
kann zu löschen Linien mit dem Muster verwendet werden ,quelle
Falls Sie zufällig verwenden, können
fzf
Sie Folgendes verwenden::Lines
in allen geöffneten Dateien:BLines
nur im offenen Puffer:Rg [pattern]
mitripgrep
quelle
Eine hackige schmutzige Art, dies zu tun:
quelle
Sie meinen wahrscheinlich Befehl in weniger vi vim & / pattern /, der Zeilen zeigt, die / pattern / enthalten (wie grep).
quelle