Ich vermute, dass sich die ursprüngliche Frage nicht auf Deaktivierung von Suchhervorhebung, sondern einfach das Löschen der Hervorhebung der letzten Suche. Die Lösung der Suche nach einer Kauderwelsch-Zeichenfolge, die der ursprüngliche Poster erwähnte, ist eine, die ich seit einiger Zeit verwende, um die Hervorhebung von einer früheren Suche zu löschen, aber sie ist hässlich und umständlich.
Einige Vorschläge, die ich gefunden habe, um hinzuzufügen nnoremap ...
zu ~/.vimrc haben hier den Effekt, dass sie vim beim Start in den Ersetzungsmodus versetzen, was überhaupt nicht das ist, was ich will. Die einfachste Lösung, die ich gefunden habe, ist das Hinzufügen der Zeile
nmap <esc><esc> :noh<return>
zu meiner ~/.vimrc. Dies entspricht dem KISS-Prinzip und stört nicht die Pfeiltasten, was bei der Verwendung eines einzelnen <esc> der Fall ist. Ein Doppel-<esc> ist im Befehlsmodus erforderlich (oder ein Dreifach-<esc> im Einfüge- oder Ersetzungsmodus), um die Hervorhebung einer vorherigen Suche zu löschen, aber aus Sicht der Benutzeroberfläche macht dies die Operation so einfach wie möglich.
7 Stimmen
:set invhlsearch deaktiviert die Hervorhebung, wenn sie bereits hervorgehoben ist, und aktiviert sie, wenn sie es nicht ist. Sie können es mit Shift-H verbinden.
1 Stimmen
@StewartJohnson Wenn ich das in meinen .vimrc-Dateien mache, scheint es mit :set mouse=a zu interferieren/zu brechen. Irgendeine Idee warum? Dieser Fehler tritt nur in iTerm2 auf
0 Stimmen
Ich habe im Laufe der Jahre so viel Kauderwelsch getippt, um diese Markierung zu löschen (wirklich ineffizient bei Textdateien mit mehreren GB). Die Kauderwelsch-Suche ist im Grunde eine zweite Suche, die Rechenzeit vergeudet. Gute Frage!
24 Stimmen
@StewartJohnson Seien Sie vorsichtig! Ihr am besten bewerteter Kommentar mit Mapping verursacht Fehler und unerwartetes Verhalten, wie in den Kommentaren unten beschrieben stackoverflow.com/a/1037182/1698467
0 Stimmen
@StewartJohnson, irgendwie bricht dieses 'nnoremap' das Scrollen mit der Maus (iTerm, vim8). es funktioniert aber gut, wenn man ':noh' manuell eingibt
12 Stimmen
El
nnoremap <esc> :noh<return><esc>
Die von @StewartJohnson vorgeschlagene Lösung funktioniert gut im GUI-Vim, verursacht aber Probleme mit Pfeiltasten und anderen ESC-kodierten Tasten, wenn vim in einem Terminal läuft. Stecken Sie es nicht in Ihr~/.vimrc
ohne Umhüllung inif has('gui_running')
...end
.