Vim löscht die letzte Suche hervor

1904

Nach einer Suche in Vim werden alle Vorkommen hervorgehoben. Wie kann ich das deaktivieren? Ich mache jetzt eine weitere Suche nach etwas Kauderwelsch, das nicht gefunden werden kann.

Gibt es eine Möglichkeit, die Hervorhebung nur vorübergehend zu deaktivieren und bei Bedarf wieder zu aktivieren?

Gabriel Solomon
quelle
197
Ich denke, die Lösung "nnoremap <esc>: noh <return> <esc>" ist eine vollständigere Antwort auf die Frage. Wenn Sie diese in Ihre .vimrc-Datei einfügen, können Sie nach der Suche einfach <esc> drücken, um die Hervorhebung zu löschen aus der vorherigen Suche (aber die Hervorhebung nicht endgültig deaktivieren).
Stewart Johnson
5
: set invhlsearch deaktiviert die Hervorhebung, wenn sie bereits hervorgehoben ist, und aktiviert sie, wenn dies nicht der Fall ist. Sie können es mit Shift-H abbilden.
Puffadder
1
@StewartJohnson, der das in meinen .vimrc-Dateien tut, scheint zu stören / zu brechen: set mouse = a. Irgendwelche Ideen warum? Dieser Fehler tritt nur in iTerm2
Charlie Parker am
20
@StewartJohnson Sei vorsichtig! Ihr am besten bewerteter Kommentar mit Zuordnung verursacht Fehler und unerwartetes Verhalten, wie in den Kommentaren unten zu stackoverflow.com/a/1037182/1698467
skywinder
3
Die nnoremap <esc> :noh<return><esc>von @StewartJohnson vorgeschlagene Lösung funktioniert gut in GUI vim, verursacht jedoch Probleme mit Pfeiltasten und anderen ESC-codierten Schlüsseln, wenn vim in einem Terminal ausgeführt wird. Setzen Sie es nicht in Ihrem ~/.vimrc ohne es in Verpackung if has('gui_running')... end.
Jbyler

Antworten:

1587

So deaktivieren Sie die Hervorhebung bis zur nächsten Suche:

:noh

Oder deaktivieren Sie die Hervorhebung vollständig:

set nohlsearch

Oder um es umzuschalten:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>
Mykola Golubyev
quelle
14
Wenn Sie nohlsearch festlegen, wird die Hervorhebung zurückgegeben, wenn vim neu gestartet wird. :nohfunktioniert besser.
Dharmit
21
Es ist ärgerlich, dass die Suche nach einem Kauderwelsch-String genauso schnell sein kann: / oajf3w9 wie der Typ: noh. Ich mag @ avocades Lösung, den Leertaste
zuzuordnen
160
Dies geht aus dieser Antwort und den Kommentaren nicht hervor: Beachten Sie, dass set nohlsearchdie Hervorhebung auch für die nächsten Suchvorgänge deaktiviert wird. Das Verhalten von :nohist sehr unterschiedlich: Die Hervorhebung wird automatisch wieder aktiviert, wenn Sie eine neue Suche durchführen oder wenn Sie etwas im Zusammenhang mit der aktuellen Suche tun (z. B. wenn Sie eingeben n, um zum nächsten Element zu gelangen).
Skippy le Grand Gourou
10
Keine Erklärung, was diese tatsächlich tun und welche Konsequenzen dies hat. Vielen Dank an @SkippyleGrandGourou für die Erklärung einiger davon.
Jason S
3
Für was es wert ist, '\/'map <Leader>/ :nohlsearch<CR>
ordne
689

Aus der VIM-Dokumentation

So löschen Sie das zuletzt verwendete Suchmuster:

:let @/ = ""

Dadurch wird das Muster nicht auf eine leere Zeichenfolge festgelegt, da dies überall übereinstimmen würde. Das Muster wird wirklich gelöscht, wie beim Starten von Vim.

Shaun Bouckaert
quelle
129
... was eine bessere Lösung für sein Problem wäre, so wie ich es verstehe.
Shaun Bouckaert
8
Das habe ich gesucht! Ich habe abgestimmt, die Frage ist etwas vage. Dies führte mich zu der Annahme, dass er dies wollte: "Ich mache jetzt eine weitere Suche nach etwas Kauderwelsch, das nicht gefunden werden kann." Denn genau das habe ich getan, um die Suche zu löschen, aber nicht zu deaktivieren, damit die nächste Suche wieder hervorgehoben wird.
Claytron
50
Dies ist, was ich dachte, die Frage war ... hier ist ein Befehl, den ich gemacht habe, um das Löschen der Suchzeichenfolge zu beschleunigen (und daher alle Markierungen zu entfernen): :command C let @/=""Mit dieser Option können Sie eingeben, um die Suchzeichenfolge :Czu löschen ... sehr schnell und hat keinen Einfluss auf die zukünftige Suche oder Hervorhebung.
Jason
12
@ jcreamer898, siehe vim Hilfe zu "Register" ( :he registers). Vim verfügt über mehrere integrierte Register, die Text enthalten, manchmal für gerissene Daten, manchmal für die letzte Suche usw. Wenn Sie eine Suche durchführen, legt vim das Muster in das Register "/", auf das Sie verweisen @/. Sie können auch Werte zu Registern zugeordnet werden, @regname=valuewo regnamewird der der Name des Registers ist. So @/=""wird einfach einstellen Register „/“ auf eine leere Zeichenfolge (außer , dass für die „/“ registriert vim wird die letzte Suche löschen , wenn es eine leere Zeichenfolge enthält).
Ben Davis
3
Fügen Sie dies zu Ihrer .vimrc hinzu, um Strg + / zu erhalten, um die letzte Suche zu löschen: noremap <silent> <c-_> :let @/ = ""<CR>
angrydust
583

Du kannst tun

:noh

oder :nohlsearchum die Suchhervorhebung vorübergehend bis zur nächsten Suche zu deaktivieren.

Matt McMinn
quelle
3
danke, das war hilfreich ... irgendein Befehl zum Zurückgeben des Highlights?
Gabriel Solomon
17
: nohs schaltet nur die aktuelle Hervorhebung aus. Wenn Sie: hlsearch eingestellt haben, werden Ihre Suchvorgänge weiterhin hervorgehoben.
Greyfade
6
Ich denke, das ist es, wonach das OP gesucht hat (obwohl Shauns Antwort auch funktioniert). Ich stimme dem zu, weil es kürzer ist. Ich weiß, dass er die Antwort von nohls akzeptiert hat, aber wenn Sie sie einstellen, werden alle Suchmarkierungen deaktiviert, selbst wenn danach eine andere Suche versucht wird.
Thiago Arrais
5
Dies ist wahrscheinlich das, was das OP überhaupt wollte und ist meiner Meinung nach die kürzeste und beste Antwort.
Perfektion ist sogar in diesem sterblichen Bereich erreichbar! Ich werde dies mehr als verwenden: Hilfe und möchte nicht <esc> verschmutzen: nnoremap <F1>: noh <CR>
Sam Watkins
305

Ich habe diese Antwort vor Jahren auf vim.org gefunden:

Fügen Sie Ihrer .vimrc Folgendes hinzu:

"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>

Drücken Sie daher nach Ihrer Suche im Befehlsmodus erneut die Eingabetaste, und die Hervorhebung verschwindet.


quelle
36
Ich denke, dies ist eine viel bessere Lösung als die tatsächlich akzeptierte - entweder diese oder die andere, bei der sie stattdessen <ESC> zugeordnet ist.
Stewart Johnson
20
Dies ist eine viel bessere Antwort auf "nnoremap <esc>: noh <return> <esc>", da dies kein seltsames Verhalten verursacht.
Dennis
19
Beachten Sie unbedingt, dass Sie auf der rechten Seite einer Neuzuordnung keine Kommentare einfügen. Sie werden als Befehle für die Neuzuordnung im Gegensatz zu Kommentaren interpretiert.
Codybuell
13
Der Kommentar ist falsch; der Befehl wird nicht unset die letzte Mustersuche , sondern einfach abschaltet die Hervorhebung der aktuellen Ergebnisse; Sie können drücken n, um das nächste Vorkommen zu finden (das erneut hervorgehoben wird). Übrigens würde ich beim Scripting die abgekürzte Form vermeiden und stattdessen schreiben :nohlsearch.
Tobias
28
Fügen Sie <silent> hinzu, um zu vermeiden, dass die Anzeige blinkt und noh in der Befehlszeile bleibt -: nnoremap <silent> <CR>: nohlsearch <CR> <CR>
Peter N Lewis
137

Von http://twitter.com/jonbho/status/2194406821

" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[

Die zweite Zeile wird für die Zuordnung zum Escape-Schlüssel benötigt, da Vim intern Escape verwendet, um spezielle Schlüssel darzustellen.

Baruch Even
quelle
12
Um ganz klar zu sein, können Sie die Hervorhebung der Suche durch Drücken der Escape-Taste
Gavin Miller
7
Aus irgendeinem Grund startet mein Terminal vim so, als ob "c" gedrückt wurde. Irgendwelche Ideen?
Jacob
31
Dies verursachte ein sehr seltsames Verhalten, als ich es versuchte: Beim Start würden regelmäßige Vim-Bewegungen (z. B. j, k) dazu führen, dass Linien entfernt werden. nnoremap <CR>: noh <CR> <CR> hat diese Probleme nicht verursacht. Ich konnte die Grundursache nicht finden.
Oasisbob
9
hmm, ich hatte das gleiche Problem wie oben. Verwenden Sie dies nicht wie es ist ohne zu testen, es sei denn, Sie möchten Ihren Text zufällig löschen ...
Derek Litz
8
Wenn Sie "nnoremap <esc>: noh <return> <esc>" verwenden, startet vim immer im "REPLACEMENT" -Modus.
user1850133
38

Meine ursprüngliche Lösung (unten) war schmutzig und verschwenderisch. Ich benutze jetzt:noh

Wie bei vielen Funktionen in Vim ist der richtige Weg oft nicht leicht zu erkennen.

- -

(MACH DAS NICHT)

Suchen Sie nach einer unwahrscheinlichen Zeichenfolge (mischen Sie die Schlüssel in der Startzeile):

/;alskdjf;

Dies funktioniert in vim und weniger und es ist einfacher, sich zu merken / zu tippen als die logisch sauberere Lösung von @ ShaunBouckaert, "um das zuletzt verwendete Suchmuster zu löschen":

:let @/ = ""

Ein möglicher Nachteil ist, dass es Ihrem Suchverlauf Junk hinzufügt.

millerdev
quelle
17
Dies ist nicht nur eine schmutzige Lösung (die ich selbst bisher verwendet habe, keine Beleidigung), ein weiterer Nachteil ist, dass am unteren Rand des Fensters ein hässliches rotes Banner mit der Aufschrift "Muster nicht gefunden" hinzugefügt wird, was fast so ärgerlich ist wie die Hervorhebung selbst und erfordert, dass weitere Aktionen verworfen werden (z. B. "Suche + Rücktaste").
Skippy le Grand Gourou
5
Es kann auch einige Sekunden dauern, da tatsächlich der gesamte Rest der Datei durchsucht wird . Das ist wirklich ärgerlich, wenn die Datei groß ist. Natürlich können Sie Ihre aktuelle Position markieren, zum Anfang springen und rückwärts nach einem Charakter suchen, aber das ist ähnlich schmutzig.
Blacklight Shining
5
Dies ist die Lösung, die die meisten verwendet haben, bevor sie sich mit dem :nohlBefehl vertraut gemacht haben. Nachdem ich von letzterem erfahren hatte, hörte ich sofort auf, diese Suchen durchzuführen.
Tobias
7
Dies ist keine Antwort; Es wird nur empfohlen, das zu tun, was OP bereits tut: "Ich suche jetzt erneut nach etwas Kauderwelsch, das nicht gefunden werden kann."
Stellen Sie Monica wieder her - notmaynard
2
Wenn Sie ein kinderleichtes und kurzes Muster wünschen, verwenden Sie einfach /$4. Es ist nicht nur unwahrscheinlich, dass etwas passt, sondern tatsächlich völlig UNMÖGLICH. $muss immer von einer neuen Zeile gefolgt werden oder das Ende der Datei sein, und 4 ist weder eine neue Zeile noch das Ende der Datei. (Der Grund für 4 ist nur, dass es auf der gleichen Taste ist, so dass es wirklich einfach ist, schnell zu tippen)
Semikolon
32

Neu zugeordnet in meiner .vimrc.local-Datei, schnell und schmutzig, aber sehr funktional:

" Clear last search highlighting
map <Space> :noh<cr>
Avocade
quelle
32
nnoremap <cr> :noh<CR><CR>:<backspace>

Auf diese Weise werde ich :nohin der Kommandozeile angezeigt, wenn ich enternach der Suche treffe .

:Es ist, als würde man mit der Eingabe eines neuen Befehls beginnen, ihn Backspacelöschen und den Fokus wieder in das Editorfenster setzen.

sjas
quelle
6
Vielen Dank. Das ": noh" unten links machte mich verrückt, verdammte Zwangsstörung.
Andrewweber
Ich habe versucht, es auf verschobenes cr abzubilden, indem ich nnoremap <S-cr> ausgeführt habe: noh <CR> <CR>, aber es hat nicht funktioniert. Wissen Sie, warum es möglicherweise nicht funktioniert?
Charlie Parker
Ich vermute, Sie können Schicht nicht mit Rückkehr verbinden, aber ich habe ehrlich gesagt keine Ahnung.
Sjas
@CharlieParker IIRC Sie können nur Shift-On [a-z]und solche Zeichen verwenden.
Sjas
7
Anstatt dies zu tun :<Backspace>, können Sie einfach <silent>nach dem hinzufügen nnoremap, um Vim anzuweisen, keine Ausgabe im Befehlsbereich anzuzeigen : nnoremap <silent> <cr> :noh<CR><CR>.
Soren Bjornstad
31

Die vorgeschlagenen :nohoder :nohlsearch(z. B. die von Matt McMinn) Antworten sind richtig, um die Hervorhebung der Suche vorübergehend zu deaktivieren - wie in der ursprünglichen Frage gestellt.

Ich dachte, ich würde ein Mapping beisteuern, das ich im Normalmodus nützlich finde:

nnoremap <C-L> :nohlsearch<CR><C-L>

Standardmäßig wird CtrlLin Vim der Bildschirm gelöscht und neu gezeichnet. Eine Reihe von Befehlszeilenprogrammen (hauptsächlich solche, die die GNU Readline-Bibliothek verwenden , z. B. Bash) verwenden dieselbe Tastenkombination, um den Bildschirm zu löschen. Diese Funktion ist nützlich, wenn ein im Hintergrund ausgeführter Prozess auf dem Terminal gedruckt wird und Teile des Vordergrundprozesses überschreibt.

Diese Zuordnung 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 CtrlLfür beide Aktionen zusammen zu verwenden, anstatt eine separate Zuordnung zum Deaktivieren der Suchhervorhebung zu erstellen.

NB: Wird noremap verwendet, anstatt mapwie sonst, wäre die Zuordnung rekursiv.

Tipp: Normalerweise ordne ich neu Caps Lockzu Ctrl, um die Eingabe solcher Tastenkombinationen zu vereinfachen. Die Details hierfür hängen von Ihrer Wahl des Betriebssystems / Fenstersystems ab (und sind für diese Antwort nicht thematisch). Sowohl die folgenden Tipps enthalten Informationen zum Zuordnen Caps Lockzu Ctrlsowie Esc:

Anthony Geoghegan
quelle
26

Ich :nohordne im Allgemeinen dem Backslash-Schlüssel zu. Um die Hervorhebung wieder zu aktivieren, drücken Sie einfach nund es wird wieder hervorgehoben.

Höhlenmensch
quelle
24

Deaktivieren Sie die Suchhervorhebung dauerhaft

Übereinstimmungen werden nicht hervorgehoben, wenn Sie eine Suche mit durchführen /

:set nohlsearch

Markierung bis zur nächsten Suche löschen

:noh

oder :nohlsearch(wird gelöscht, bis noder Ngedrückt wird)


Markierung beim Drücken löschen ESC

nnoremap <esc> :noh<return><esc>

Deaktivieren Sie die Markierung beim Drücken einer anderen Taste oder einer benutzerdefinierten Karte

  • Klare Markierungen beim Drücken \(Backslash)

    nnoremap \ :noh<return>
    
  • Klare Highlights beim ESCzweimaligen Schlagen

    nnoremap <esc><esc> :noh<return>
    
Sheharyar
quelle
2
Die nnoremap <silent> <esc> :noh<return><esc>Lösung funktioniert gut in GUI vim, verursacht jedoch schwerwiegende Probleme mit Pfeiltasten und anderen ESC-codierten Tasten, wenn vim in einem Terminal ausgeführt wird. Setzen Sie es nicht in Ihrem ~/.vimrc ohne es in Verpackung if has('gui_running')... end. Fügen Sie auch das hinzu, <silent>wodurch das Flashen des :nohBefehls in der Statusleiste vermieden wird .
Jbyler
17

Dies ist, was ich benutze (extrahiert aus vielen verschiedenen Fragen / Antworten):

nnoremap <silent> <Esc><Esc> :let @/=""<CR>

Mit "double" Escentfernen Sie die Hervorhebung, aber sobald Sie erneut suchen, wird die Hervorhebung erneut angezeigt.


Eine andere Alternative:

nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>

Laut vim Dokumentation:

clearmatches ()

    Clears all matches previously defined by |matchadd()| and the

    |:match| commands.
Pablo Olmos de Aguilera C.
quelle
Ich habe einige Fehler in Top-Lösungen festgestellt, um Zeit zu sparen und alle Antworten auszuprobieren. Verwenden Sie diese Lösung! Bearbeiten Sie Ihre .vimrcund nnoremap <silent> <Esc><Esc> :let @/=""<CR>
fügen
Aber das ist es, was es sagt. Oo Vielleicht könntest du dich verbessern?
Pablo Olmos de Aguilera C.
Ich unterstütze Ihre Lösung ... Es ist die beste IMO ... Und ich habe sie auch positiv bewertet .. :)
user1336087
1
Das Löschen des Suchregisters mit @/=""hat den Nebeneffekt n, dass Ihre Suche nicht funktioniert. Ich bevorzuge, :nohdass die vorherige Suche im Register zur Wiederverwendung bleibt.
Jbyler
11

Deaktivieren der Hervorhebung bis zur nächsten Suche

:noh

Visuelle Illustration

arcseldon
quelle
10

Wenn Sie das incsearch.vim-Plugin installiert haben, gibt es eine Einstellung, mit der die Hervorhebung nach der Suche automatisch gelöscht wird:

let g:incsearch#auto_nohlsearch = 1

Geben Sie hier die Bildbeschreibung ein

Deqing
quelle
8

Janus für VIM und GVIM hat eine Reihe von eingebauten Dingen für Neulinge wie mich, einschließlich

<leader>hs - toggles highlight search

Welches ist genau das, was Sie brauchen. Geben Sie einfach \hsim normalen Modus ein. (Der Führungsschlüssel ist \standardmäßig zugeordnet.)

HTH.

Paul-Sebastian Manole
quelle
7

Hierfür gibt es zwei 'must have'-Plugins:

  1. sinnvoll - Ctrl-lfür nohlsearch und neu zeichnen bildschirm.
  2. unimpared - [oh, ]ohund cohdie Kontrolle hlsearch.
dkiyatkin
quelle
unbeeinträchtigt geändert , coum yoin v2, es ist so yoh. Siehe github.com/tpope/vim-unimpaired/blob/v2.0/doc/unimpaired.txt und github.com/tpope/vim-unimpaired/issues/150
myrdd
cohfunktioniert immer noch, obwohl es eine Meldung gibt, die vorschlägt, yohwenn Sie verwendencoh
avinashkrsharma
7

Deaktivieren Sie die Hervorhebung, sobald Sie den Cursor bewegen:

Installieren Sie vim-cool . Es wurde erstellt, um dieses spezielle Problem zu beheben. Die Hervorhebung wird deaktiviert, sobald Sie den Cursor bewegen. Seien Sie jedoch gewarnt, es erfordert eine aktuelle vim-Version!

00prometheus
quelle
6

Dadurch wird das Suchhighlight nach updatetimeMillisekunden Inaktivität gelöscht.

updatetimeDer Standardwert ist 4000 ms oder 4 s, aber ich habe meinen auf 10 s eingestellt. Es ist wichtig zu beachten, dass updatetimedies mehr als nur dies tut. Lesen Sie daher die Dokumente, bevor Sie sie ändern.

function! SearchHlClear()
    let @/ = ''
endfunction
augroup searchhighlight
    autocmd!
    autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END
Kevin Cox
quelle
6

Wenn Sie die Hervorhebung schnell aktivieren / deaktivieren möchten, können Sie einen Schlüssel zuordnen

" Press F4 to toggle highlighting on/off, and show current value.
:noremap <F4> :set hlsearch! hlsearch?<CR>

Fügen Sie einfach das obige Snippet in Ihre .vimrc-Datei ein.

Das ist für mich die bequemste Möglichkeit, das Suchhighlight mit einem singenden Tastenanschlag ein- und auszublenden

Weitere Informationen finden Sie in der Dokumentation unter http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches

Amaynut
quelle
5

Eine weitere Lösung durch Kombination von 2 Top-Antworten:

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>
Skywinder
quelle
Das Löschen des Suchregisters mit @/=""hat den Nebeneffekt n, dass Ihre Suche nicht funktioniert. Ich bevorzuge, :nohdass die vorherige Suche im Register zur Wiederverwendung bleibt. Sie können <F3>sich mitnnoremap <F3> :noh<CR>
jbyler
4

Ich benutze nur das einfache Nohl unten und es werden keine Plugins benötigt.

:nohl

Stryker
quelle
4

Ich vermute, dass es bei der ursprünglichen Frage nicht darum ging, die Hervorhebung der Suche zu deaktivieren, sondern lediglich die Hervorhebung aus der letzten Suche zu löschen. Die Lösung für die Suche nach einem Kauderwelsch, die auf dem Originalplakat erwähnt wurde, ist eine, die ich seit einiger Zeit verwende, um Hervorhebungen aus einer früheren Suche zu entfernen, aber sie ist hässlich und umständlich.

Einige Vorschläge, die ich nnoremap ...zu ~ / .vimrc hinzugefügt habe, haben den Effekt, dass vim beim Start in den Ersetzungsmodus versetzt wird, 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 meinem ~ / .vimrc. Dies entspricht dem KISS-Prinzip und beeinträchtigt die Pfeiltasten nicht, was bei Verwendung eines einzelnen <esc> der Fall ist. Im Befehlsmodus ist ein doppeltes <esc> erforderlich (oder ein dreifaches <esc> aus dem Einfüge- oder Ersetzungsmodus), um die Hervorhebung aus einer vorherigen Suche zu löschen. Aus Sicht der Benutzeroberfläche ist der Vorgang jedoch so einfach wie möglich.

Lindsay Haisley
quelle
Was meinst du mit der einzelnen <esc>, die die Pfeiltasten stört?
Hansmosh
1
@hansmosh Siehe unix.stackexchange.com/questions/28713/… Ich verwende zwei Zeilen in meiner .vimrc wie folgt nmap <esc><esc> :noh<return> - to turn off search highlighting and nmap <esc>` :set hlsearch<return> - to turn on search highlighting
Lindsay Haisley
4

Ich benutze folgendes in meinem ~/.vimrc

nnoremap <Leader><space> :noh<Enter>

Dies macht es sehr einfach und schnell, die aktuell hervorgehobene Suche zu löschen. Mein Leitschlüssel ist zugeordnet, \sodass die Aktion mit meinem rechten kleinen Finger und Daumen sehr einfach ausgeführt werden kann.

John Slavick
quelle
3

Ich denke, das Mischen von @ShaunBouckaert und 19. März 09 um 16:22 Antworten ist ein guter Kompromiss:

" Reset highlighted search
nnoremap <CR> :let @/=""<CR><CR>

Drücken Sie Enterund der hervorgehobene Text wird nicht mehr hervorgehoben, während die Suchhervorhebung weiterhin aktiviert ist.

Ekans
quelle
3

Sie können : noremap verwenden , um das Suchergebnis wie folgt ein- oder auszuschalten

:noremap <F3> :set hls! hls?<CR>

caopeng
quelle
3

Basierend auf der @ baruch-Even-Antwort können Sie den Suchbegriff ESCim normalen Modus durch zweimaliges Drücken löschen mit:

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[
Dinigo
quelle
Ich denke, die zweite Bindung ist in Ordnung, aber die erste ist gefährlich. Das Neuzuordnen <esc>funktioniert gut in GUI vim, verursacht jedoch schwerwiegende Probleme mit Pfeiltasten und anderen ESC-codierten Tasten, wenn vim in einem Terminal ausgeführt wird. Setzen Sie es nicht in Ihrem ~/.vimrc ohne es in Verpackung if has('gui_running')... end. Fügen Sie auch das hinzu, <silent>wodurch das Flashen des :nohBefehls in der Statusleiste vermieden wird .
Jbyler
1

Ich mag es auch nicht. Ich fand es mühsam, die :nohlganze Zeit einzutreten ... also habe ich die folgende Zuordnung in meine eingefügt.vimrc

noremap <C-_> :nohl<cr>:<backspace>

Das erste Bit ( :nohl<cr>) löscht die Hervorhebung; Das zweite Bit ( :<backspace>) ist ein Trick, um die Befehlszeile zu bereinigen . Die Suche befindet sich immer noch im Hintergrund. Wenn Sie sie also einfach drücken, wird nsie erneut hervorgehoben und zum nächsten Ereignis weitergeleitet.

Ricardo
quelle
1

Ich habe dies meiner vimrcDatei hinzugefügt .

command! H let @/=""

Nachdem Sie eine Suche durchgeführt haben und die Highlights aus Ihrer Suche löschen möchten, tun Sie dies einfach :H

Pixel 67
quelle
1

Alternativ können Sie Ihrer .vimrc-Datei eine Zuordnung hinzufügen als:

nmap <C-N>: nohlsearch

und dann können Sie drücken

Strg + N.

jederzeit, um den markierten Text zu löschen

Löwe
quelle
Bitte bearbeiten Sie Ihre Antwort, um sicherzustellen, dass sie andere Antworten verbessert, die bereits in dieser Frage enthalten sind.
Hongsy