2324 Stimmen

Vim löscht die Markierung der letzten Suche

Nachdem ich eine Suche in Vim durchgeführt habe, werden alle Vorkommen hervorgehoben. Wie kann ich das abschalten? Ich suche nun erneut nach etwas Kauderwelsch, das nicht gefunden werden kann.

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

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!

2047voto

Mykola Golubyev Punkte 54937

So schalten Sie die Hervorhebung bis zur nächsten Suche aus:

:noh

Oder schalten Sie die Hervorhebung ganz aus:

set nohlsearch

Oder, um es umzuschalten:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>

211 Stimmen

Dies geht aus der Antwort und den Kommentaren nicht eindeutig hervor: Beachten Sie, dass set nohlsearch wird die Hervorhebung auch für die nächsten Suchvorgänge deaktiviert. Das Verhalten von :noh ist ganz anders: Die Hervorhebung wird automatisch wieder aktiviert, wenn Sie eine neue Suche durchführen oder sogar, wenn Sie etwas tun, das mit der aktuellen Suche zusammenhängt (z. B. wenn Sie n um zum nächsten Punkt zu gelangen).

5 Stimmen

Ich ordne sie <Strg-L> zu, weil das meine bevorzugte Tastenkombination ist, um den Bildschirm zu säubern. Hier ist meine Zuweisung: nmap <silent> <C-L> <C-L>:nohlsearch<CR>:match<CR>:diffupdate<CR>

0 Stimmen

@Rainning, ist es das, was Sie in .vimrc eintragen würden? Wenn nicht, was können Sie in .vimrc einfügen, um :noh nach jeder Suche dauerhaft zu aktivieren?

809voto

Shaun Bouckaert Punkte 7947

Von der VIM-Dokumentation

Zum Löschen des zuletzt verwendeten Suchmusters:

:let @/ = ""

Damit wird das Muster nicht auf eine leere Zeichenkette gesetzt, denn das würde überall passen würde. Das Muster wird wirklich gelöscht, wie beim Starten von Vim.

0 Stimmen

Es wird für immer deaktiviert, aber nicht vorübergehend.

140 Stimmen

...was meines Erachtens eine bessere Lösung für sein Problem wäre.

2 Stimmen

Ihre Antwort beantwortet seine Frage tatsächlich besser, indem Sie die Markierung ein- und ausschalten. Wenn das Problem jedoch nur darin bestand, dass die letzte Suche hervorgehoben blieb, nachdem Sie gefunden hatten, was Sie suchten - so hatte ich die Frage zunächst verstanden -, dann können Sie mit meiner Methode die Suche auch löschen.

646voto

Matt McMinn Punkte 15223

Das können Sie tun

:noh

o :nohlsearch um die Suchhervorhebung bis zur nächsten Suche vorübergehend zu deaktivieren.

3 Stimmen

Danke, das war hilfreich ... irgendeinen Befehl für die Rückkehr der Markierung?

20 Stimmen

:nohs schaltet nur die aktuelle Hervorhebung ab. Wenn Sie :set hlsearch haben, werden Ihre Suchanfragen weiterhin hervorgehoben.

6 Stimmen

Ich glaube, das ist es, wonach der Auftraggeber gesucht hat (obwohl Shauns Antwort auch funktioniert). Ich stimme dafür, dass es kürzer ist. Ich weiß, dass er die Antwort von Nohls akzeptiert hat, aber die Einstellung deaktiviert alle Suchmarkierungen, auch wenn danach eine weitere Suche versucht wird.

358voto

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

Fügen Sie das Folgende zu Ihrer .vimrc hinzu:

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

Drücken Sie also nach Ihrer Suche im Befehlsmodus einfach erneut die Eingabetaste, und die Markierung verschwindet.

41 Stimmen

Ich denke, dies ist eine viel eine bessere Lösung als die, die tatsächlich akzeptiert wurde - entweder diese oder die andere, bei der es stattdessen auf <ESC> abgebildet wird.

23 Stimmen

Dies ist eine viel bessere Antwort als "nnoremap <esc> :noh<return><esc>", weil es kein seltsames Verhalten verursacht.

20 Stimmen

Ein wichtiger Hinweis: Stellen Sie sicher, dass Sie keine Kommentare auf der rechten Seite einer Neuzuordnung einfügen. Sie werden als Befehle für die Neuzuordnung interpretiert und nicht als Kommentare.

151voto

Baruch Even Punkte 2441

から 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 benötigt für Zuordnung zur Escape-Taste da Vim intern Escape benutzt, um spezielle Tasten darzustellen.

13 Stimmen

Nur um das klarzustellen: Sie können die Suchmarkierung löschen, indem Sie die Escape-Taste drücken.

7 Stimmen

Aus irgendeinem Grund führt dies dazu, dass mein Terminal vim startet, als ob "c" gedrückt wurde. Irgendwelche Ideen?

32 Stimmen

Dies verursachte ein sehr seltsames Verhalten, als ich es ausprobierte: Beim Start führten normale Vim-Bewegungen (z.B. j, k) dazu, dass Zeilen entfernt wurden. nnoremap <CR> :noh<CR><CR> verursachte diese Probleme nicht. Ich konnte die eigentliche Ursache nicht ausfindig machen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X