it-swarm.com.de

Vim letzte Markierung der Suche löschen

Nach einer Suche in Vim werden alle Vorkommnisse hervorgehoben. Wie kann ich das deaktivieren? Ich suche jetzt noch einmal nach etwas, das nicht gefunden werden kann.

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

1699
Gabriel Solomon

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

:noh

Oder schalten Sie die Hervorhebung vollständig aus:

set nohlsearch

Oder um es zu wechseln:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>
1387
Mykola Golubyev

Aus der VIM Dokumentation

So löschen Sie das zuletzt verwendete Suchmuster:

:let @/ = ""

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

654
Shaun Bouckaert

Du kannst tun

:noh

oder :nohlsearch , um die Hervorhebung der Suche bis zur nächsten Suche vorübergehend zu deaktivieren.

562
Matt McMinn

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

Fügen Sie Ihrem .vimrc Folgendes hinzu:

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

Drücken Sie nach der Suche im Befehlsmodus einfach die Return-Taste und die Hervorhebung verschwindet. 

277

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 von zum Escape-Schlüssel benötigt, da Vim intern Escape verwendet, um Sonderschlüssel darzustellen.

135
Baruch Even

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 Zeichensequenz (Mash die Tasten in der Home-Zeile):

/;alskdjf;

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

:let @/ = ""

Ein potenzieller Nachteil besteht darin, dass Ihr Suchprotokoll Junk hinzugefügt wird.

35
millerdev
nnoremap <cr> :noh<CR><CR>:<backspace>

Auf diese Weise werde ich :noh los, der in der Kommandozeile angezeigt wird, wenn ich treffe enter nach der suche.

: ist wie die Eingabe eines neuen Befehls zu beginnen, Backspace löscht es und setzt den Fokus wieder in das Editorfenster.

31
sjas

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

" Clear last search highlighting
map <Space> :noh<cr>
30
avocade

Die Antworten, die :noh oder :nohlsearch (z. B. Matt McMinns) vorschlagen, sind korrekt, um die Hervorhebung der Suche vorübergehend zu deaktivieren - wie in der ursprünglichen Frage angegeben.

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

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

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

Diese Normalmodus-Zuordnung löscht auch die Hervorhebung des neuesten Suchbegriffs, bevor der Bildschirm neu gezeichnet wird. Ich finde, die beiden Funktionen ergänzen sich und es ist bequem, eine zu verwenden CtrlL Erstellen Sie für beide Aktionen zusammen keine separate Zuordnung, um die Hervorhebung der Suche zu deaktivieren.

Hinweis: noremap wird anstelle von map verwendet, da die Zuordnung sonst rekursiv wäre.

Tipp: Ich repariere normalerweise Caps Lock zu Ctrl um es einfacher zu machen, solche Tastenkombinationen einzugeben; Die Details dazu hängen von Ihrer Wahl des Betriebssystems/Fenstersystems ab (und sind für diese Antwort nicht relevant). Die beiden folgenden Tipps enthalten Informationen zur Zuordnung Caps Lock zu Ctrl ebenso gut wie Esc:

30

Im Allgemeinen ordne ich :noh dem Backslash-Schlüssel zu. Um die Hervorhebung wieder zu aktivieren, drücken Sie einfach nund es wird wieder hervorgehoben.

26
caveman

Deaktivieren Sie die Suchmarkierung dauerhaft

Übereinstimmungen werden bei jeder Suche mit nicht hervorgehoben /

:set nohlsearch

Markierung bis zur nächsten Suche löschen

:noh

oder :nohlsearch (löscht bis n oder N wird gedrückt)


Klare Hervorhebung beim Drücken ESC

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

Klare Hervorhebung beim Drücken einer anderen Taste oder benutzerdefinierten Karte

  • Deutliche Hervorhebungen beim Drücken \ (Backslash)

    nnoremap \ :noh<return>
    
  • Klare Schlaglichter ESC zweimal

    nnoremap <esc><esc> :noh<return>
    
21
Sheharyar

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

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

Mit "double" Esc Sie entfernen die Hervorhebung, aber sobald Sie erneut suchen, wird die Hervorhebung wieder 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.

Deaktivieren der Markierung bis zur nächsten Suche

:noh

 Visual Illustration

9
arcseldon

Wenn Sie incsearch.vim plugin installiert haben, können Sie die Markierung nach der Suche automatisch löschen:

let g:incsearch#auto_nohlsearch = 1

 enter image description here

8
Deqing

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

<leader>hs - toggles highlight search

das ist genau das, was du brauchst. Geben Sie einfach \hs im normalen Modus ein. (Der Lead-Schlüssel ist standardmäßig \ zugeordnet.)

HTH.

8
brokenthorn

Wenn Sie in der Lage sein möchten, Markierungen schnell zu aktivieren/deaktivieren, müssen Sie kann 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 Such-Highlight mit einem Tastendruck ein- und auszublenden

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

6
Amaynut

Dadurch wird die Suchhervorhebung nach updatetime Millisekunden Inaktivität gelöscht. 

updatetime ist standardmäßig 4000ms oder 4s, aber ich setze meine auf 10s. Es ist wichtig zu wissen, dass updatetime mehr tut als das. Lesen Sie daher die Dokumente, bevor Sie sie ändern.

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

Ich persönlich möchte esc dem Befehl :noh wie folgt zuordnen:

map <esc> :noh<cr>

Ich habe kürzlich einen ganzen Artikel über die Vim-Suche geschrieben : Wie kann ich auf Vanilla Vim suchen und das beste Plugin, um die Suchfunktionen zu verbessern.

5
Matthieu

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

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>
5
skywinder

Dafür gibt es zwei "must have" -Plugins:

  1. sensible - Ctrl-l für nohlsearch und Bildschirm neu zeichnen.
  2. unimpared - [oh, ]oh und coh zur Steuerung von hlsearch.
5
dkiyatkin

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

:nohl

4
Stryker

Meine Vermutung ist, dass es sich bei der ursprünglichen Frage nicht um das Markieren von Deaktivieren der Suche, sondern um das Hervorheben der Hervorhebung der letzten Suche handelt. Die Lösung der Suche nach einem Kauderwelsch, den das ursprüngliche Poster erwähnte, ist eine, die ich seit einiger Zeit verwendet habe, um das Hervorheben einer vorherigen Suche zu löschen, aber es ist hässlich und umständlich.

Einige Vorschläge, die ich gefunden habe, um nnoremap ... zu ~/.vimrc hinzuzufügen, bewirken, dass vim beim Ersetzen in den Ersetzungsmodus versetzt wird, was gar 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 stört nicht die Pfeiltasten, die ein einziges <esc> verwendet. Ein doppeltes <esc> ist im Befehlsmodus erforderlich (oder ein dreifaches <esc> aus dem Einfüge- oder Ersetzungsmodus), um die Hervorhebung aus einer vorherigen Suche zu löschen. Dies macht die Bedienung aus Sicht der Benutzeroberfläche jedoch so einfach wie möglich.

4
Lindsay Haisley

Ich verwende Folgendes in meinem ~/.vimrc

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

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

4
John Slavick

Basierend auf der Antwort von @baruch-even können Sie den Suchbegriff auf löschen ESC zweimal drücken im normal Modus mit:

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[
3
dinigo

sie können: noremap verwenden, um das Suchergebnis ein- oder auszuschalten

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

3
caopeng

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

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

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

3
Ekans

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

2
00prometheus

Ich mag es auch nicht. Ich fand es langweilig, ständig :nohl einzugeben ... deshalb habe ich die folgende Zuordnung in meinen .vimrc eingefügt.

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

Das erste Bit (:nohl<cr>) löscht die Hervorhebung. Das zweite Bit (:<backspace>) ist ein Trick für clean die Befehlszeile. Die Suche ist immer noch im Hintergrund vorhanden. Wenn Sie einfach n drücken, wird sie erneut hervorgehoben und Sie gelangen zum nächsten Vorkommen. 

1
ricardo

Ich habe dies meiner vimrc-Datei hinzugefügt. 

command! H let @/="" 

Um es zu benutzen, mach einfach :H

0
pixel 67