Die Antworten, die vorschlagen :noh
o :nohlsearch
(z. B. die von Matt McMinn) sind korrekt für vorübergehend Deaktivierung der Suchhervorhebung - wie in der ursprünglichen Frage gefordert.
Ich dachte, ich würde ein Mapping beisteuern, das ich im Normalmodus nützlich finde:
nnoremap <C-L> :nohlsearch<CR><C-L>
Standardmäßig, CtrlL in Vim löscht und zeichnet den Bildschirm neu. Eine Anzahl von Kommandozeilen-Programmen (meistens diejenigen, die die GNU Readline-Bibliothek (z. B. Bash) verwenden dieselbe Tastenkombination, um den Bildschirm zu löschen. Diese Funktion ist nützlich, wenn ein im Hintergrund laufender Prozess in das Terminal druckt und dabei Teile des Vordergrundprozesses überschreibt.
Diese Abbildung im Normalmodus löscht auch die Hervorhebung des letzten Suchbegriffs, bevor der Bildschirm neu gezeichnet wird. Ich finde, die beiden Funktionen ergänzen sich und es ist praktisch, eine davon zu verwenden CtrlL für beide Aktionen zusammen, anstatt eine separate Zuordnung für die Deaktivierung der Suchhervorhebung zu erstellen.
NB: noremap
verwendet wird, anstatt map
da die Zuordnung sonst rekursiv wäre.
Tipp: Ich überarbeite normalerweise Caps Lock a Ctrl um die Eingabe solcher Tastenkombinationen zu erleichtern; die Details dazu hängen von der Wahl des Betriebssystems/Fenstersystems ab (und sind für diese Antwort nicht relevant). Die beiden folgenden Tipps enthalten Informationen zum Mapping Caps Lock a Ctrl wie auch Esc :
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
.