Ich analysiere Log-Datei mit vim und das Format sieht so aus
YYYY-MM-DD HH:MM:SS.USEC PID Name LogText
Da mir Datum und Uhrzeit die meiste Zeit egal sind. Ich möchte sie ausblenden und mich nur auf die Spalten Name und LogText konzentrieren (um einige Bildschirmeinstellungen zu speichern). Da die ersten drei Spalten immer die ersten 35 Buchstaben in einer Zeile belegen. Gibt es eine Möglichkeit, vim zu veranlassen, die ersten 35 Buchstaben jeder Zeile nicht anzuzeigen?
cut -c36- logfile > logfile_with_first_35_chars_missing
und dann überprüfen.Antworten:
Sie haben gefragt, wie Sie die ersten Buchstaben verbergen, nicht entfernen oder außer Sichtweite rollen sollen. So verbergen Sie sie tatsächlich:
Verstecke Text in vim mit verbergen
Sie können den Abgleich in Kombination mit der Syntaxhervorhebung und der Verdeckungsfunktion verwenden, um tatsächlich keine übereinstimmenden Zeichen in Zeilen anzuzeigen.
So verbergen Sie die ersten 25 Zeichen jeder Zeile:
So blenden Sie stattdessen nur die Zeilen mit der Interpunktion eines Datums aus:
Einblenden:
Was normalerweise so aussieht:
sieht nach Ausführung der ersten beiden Befehle so aus:
Siehe auch - innen
vim
:help :syn-match
help :syn-conceal
help 'conceallevel'
help 'concealcursor'
(Lassen Sie es mich wissen, wenn es sich nicht so verhält. Möglicherweise gibt es weitere Einstellungen, die mir nicht bekannt sind.)
quelle
+conceal
(meiner) Option kompiliert werden, damit dies funktioniert. Auch gut zu tunset concealcursor=nc
, um zu verhindern, dass sich die Cursorzeile ausdehnt.+conceal
Funktionsoption ist wie einige Jahre Standard. Schade, dass es mittlerweile nicht mehr bekannt ist. Es ist wirklich großartig und flexibel. Gibt viele neue Optionen ...Verwenden Sie die Filterfunktionalität von vim . Lauf:
um den Inhalt Ihres Puffers durch den
cut
Befehl zu führen, wobei nur die Bytes 36 und höher beibehalten werden.%
bedeutet, den gesamten Puffer zu durchlaufen und seinen Inhalt durch die Ausgabe zu ersetzen!
wird der Filterbefehl mit dem Rest der Zeile als Programm ausgeführt. Dadurch wird die zugrunde liegende Datei nicht geändert, es sei denn, Sie speichern den Puffer oben.Um den ursprünglichen, nicht zugeschnittenen Puffer wiederherzustellen, können Sie ihn verwenden
:e
, sofern er durch eine echte Datei gesichert ist.quelle
%!cat %
, um es zurück zu bekommen? Das funktioniertmap
Ich denke, mehr im Einklang mit dem, was Sie suchen, ist horizontales Scrollen .
Z
ist die Befehlstaste für horizontales Scrollen, gefolgt von einer Richtung, in die Sie sich mit der linken oder rechten Pfeiltaste bewegen können.Zuerst
:set nowrap
zu deaktivieren Zeilenumbruch. Dann drücken Sie z, 35, →35 Räume zu blättern.quelle
:set nosol
[Esc]
z
s
Versuchen Sie im Befehlsmodus Folgendes:
%s/pat/sub/
: Ersetze jedes Vorkommen von pat durch sub^.\{35}
: Stimmt mit den ersten 35 Zeichen der Zeile übereinDieser Befehl entfernt die ersten 35 Zeichen jeder Zeile. Sie können lesen ,
:h regular-expression
in , um weitere Informationen über reguläre Ausdrückevim
.quelle
Es gibt eine leicht zu merkende Lösung, ohne Puffer oder Dateien zu ändern. Stellen Sie den Cursor auf das erste Zeichen (
L
in Ihrem Beispiel) des gewünschten Dateiabschnitts, und geben Sie dann Folgendes einDer
zs
Befehl richtet vi so ein, dass das Zeichen mit dem Cursor in der ersten Spalte des Bildschirms angezeigt wird. Stellen Sie sicher, dass Sie:set nosol
Ihre Konfigurationsdateien nicht eingegeben haben.Der
g$
Befehl bewegt den Cursor zur letzten sichtbaren Spalte.Der
g0
Befehl bewegt den Cursor zurück zu der ersten sichtbaren Spalte, die L enthält.Wenn eine Taste den Cursor aus den sichtbaren Spalten nach links oder rechts bewegt, werden die sichtbaren Fenster verschoben.
quelle
g0
Befehl bewegt den Cursor zur ersten sichtbaren Spalte