Ich habe vor einiger Zeit einen erfahrenen Vim Ninja gesehen, aber ich habe keine Ahnung, ob ich anfangen soll.
A) Gibt es eine Möglichkeit, die Hintergrundfarbe von vims so einzustellen, dass aufeinanderfolgende Zeilen mit identischem Inhalt hervorgehoben werden?
B) Wenn jemand weiß, wie man das macht, wäre es eine nette Änderung, wenn die Hervorhebung in aufeinanderfolgenden Zeilen erfolgt, aber nur das erste Wort (nicht die ganze Zeile) berücksichtigt.
Eine zweite Optimierung, wenn die Hervorhebung auf unterschiedliche Farben konfiguriert werden kann, wird basierend auf der Anzahl der übereinstimmenden Zeilen verwendet (oder Wörter, je nachdem, ob AB aktiv ist). Wir haben also nur zwei aufeinanderfolgende Linien, die dann grün, 3-5 aufeinanderfolgende Linien dann orange, 6+ dann rot sind.
quelle
Antworten:
Die folgenden
match
Sätze scheinen für (A) zu funktionieren:Hier scheint die Reihenfolge entscheidend zu sein. Wenn die
Low
oderMedium
Streichhölzer nachher kommenCritical
, wird es durch die lockereren Anforderungen von diesen und ähnlich fürLow
wrt subsumiertMedium
.Die Hervorhebung erscheint nicht sofort, nachdem Sie beispielsweise eine dritte oder sechste Dupe-Linie hinzugefügt haben, sondern sobald Sie sich nach dem Hinzufügen ein wenig bewegt haben. Ich bin nicht sicher, was genau das auslöst.
Ich stelle mir für B vor, Sie könnten den regulären Ausdruck ersetzen durch:
Ersetzen Sie im Allgemeinen alles
(.*)
mit(\S+).*
und\1
mit\1.*
oder was auch immer ein Wort für Sie darstellt.quelle
Als Ausgangspunkt sehen Sie hier ein Suchmuster, das mit doppelten Zeilen übereinstimmt (Änderungen in führenden Leerzeichen werden ignoriert):
:help pattern
Hier erfahren Sie mehr darüber, wie Sie solche regulären Ausdrücke erstellen können:help syntax
zeigt Ihnen, wie Sie diesen regulären Ausdruck in etwas verwandeln, das für Sie hervorgehoben wirdDas Schreiben von Syntax-Skripten zu lernen kann schwierig sein. Daher ist es eine gute kurzfristige Lösung, dies im Handumdrehen zu tun, indem Sie sicherstellen
'incsearch'
, dass die Suchvorgänge hervorgehoben sind, und einen Schlüssel für die oben beschriebene Suche zuordnen, d. Hnnoremap <F5> /^\s*\(.\+\)\n\zs\(\s*\1\n\)\+<CR>
quelle
yy10p
mit der vollen Regex auf der Linie zu machen und dann Teile auszuwählen, die Sie entfernen und treffen möchtenr<space>
. Vielleicht füge ich einen Befehl für "Alles außer der Auswahl in dieser Zeile durch Leerzeichen ersetzen" hinzu, um die Dinge etwas zu beschleunigen.,r
und verbinden Sie dann die Linien<space>
im normalen / visuellen Modus.