Mir ist aufgefallen, dass wenn ich das benutze :nohlsearch
, es eigentlich nicht dasselbe macht wie :set nohlsearch
.
Insbesondere wird die hlsearch
Einstellung nicht tatsächlich ausgeschaltet (was das ist, was :set hlsearch
) bewirkt.
Um zu demonstrieren, was ich meine:
:set hlsearch
:nohlsearch
:echo &hlsearch
Dieser druckt 1
( hlsearch ist noch eingestellt! )
:set hlsearch
:set nohlsearch
:echo &hlsearch
Dies wird gedruckt, 0
weil wir die Suche mit der Standardmethode zum Ausschalten einer Einstellung in vim ausgeschaltet haben.
Ich frage mich also, ob es einen Grund geben muss, warum das :nohlsearch
Ex-Kommando existiert.
Der Grund, warum es mich interessiert, ist, dass ich jetzt in meinem VIM-Skript testen muss, ob das Such-Highlight aktiv ist, und da ich :nohlsearch
in meinem anderen Skript anstelle von ": set nohlsearch" verwendet habe, &hlsearch
kehrt mein Test immer zurück 1
. Ich frage mich also, was ich ändere, indem ich den nohlsearch
ex-Befehl nicht mehr benutze .
:nohlsearch
ist oder nicht ... Ich denke, in seiner Abwesenheit muss ich darauf zurückgreifen, alle:nohlsearch
Anrufe mit einer Variablen zu verfolgen .nnoremap <silent> <expr> <boundkey> SearchHighlight()
woSearchHighlight()
kann eine Zeichenfolge zurückgeben":silent nohlsearch\<CR>"
. Danke auch für denv:hlsearch
Tipp, genau das, was ich gebraucht habe.Erfordert Ihr Skript, dass der aktuelle Status der Hervorhebung bekannt ist?
Um
hlsearch
nur für die aktuelle Suche auszuschalten , verwende ichCtrl-l
in meinem .vimrc:Die Hervorhebung der Suche kehrt bei der nächsten Suche zurück, wenn der obige Befehl verwendet wird.
Ctrl-l
Dies ist praktisch, da der normale Gebrauch darin besteht, den Bildschirm zu löschen und neu zu zeichnen.Um den Hervorhebungsstatus der Suche dauerhaft zu ändern, verwende ich F3 als Umschalter:
quelle