Zauważyłem, że kiedy go używam :nohlsearch
, tak naprawdę nie robi tego samego :set nohlsearch
.
W szczególności hlsearch
ustawienie nie jest faktycznie wyłączane (co jest :set hlsearch
) osiągane.
Aby zademonstrować, co mam na myśli:
:set hlsearch
:nohlsearch
:echo &hlsearch
To drukuje 1
( hlsearch jest nadal ustawiony! )
:set hlsearch
:set nohlsearch
:echo &hlsearch
Drukuje 0
ponieważ zmieniliśmy hlsearch wyłączyć za pomocą standardowego sposobu, aby przełączyć ustawienie się w vim.
Zastanawiam się, ponieważ musi istnieć jakiś rzeczywisty powód istnienia :nohlsearch
polecenia ex.
Powodem, dla którego dbam o to, jest to, że teraz potrzebuję skryptu vima, aby sprawdzić, czy wyróżnienie wyszukiwania jest aktywne, a ponieważ użyłem :nohlsearch
zamiast „: set nohlsearch” w innym skrypcie, mój &hlsearch
test zawsze powraca 1
. Zastanawiam się więc, co zmieniam, nie używając już nohlsearch
polecenia ex.
:nohlsearch
jest aktywny, czy nie ... Myślę, że w przypadku jego braku muszę uciekać się do śledzenia wszystkich:nohlsearch
połączeń za pomocą zmiennej.nnoremap <silent> <expr> <boundkey> SearchHighlight()
gdzieSearchHighlight()
może zwrócić ciąg znaków":silent nohlsearch\<CR>"
. Dziękuję również zav:hlsearch
wskazówkę, dokładnie to, czego potrzebowałem.Czy twój skrypt wymaga znajomości aktualnego stanu podświetlania?
Aby wyłączyć tylko
hlsearch
dla bieżącego wyszukiwania, używamCtrl-l
z tym w moim .vimrc:Podświetlanie wyszukiwania powraca przy następnym wyszukiwaniu przy użyciu powyższego polecenia.
Ctrl-l
jest wygodny, ponieważ normalnym zastosowaniem jest czyszczenie i przerysowywanie ekranu.Aby trwale zmienić lub wyłączyć stan podświetlania wyszukiwania, używam F3 jako mojego przełącznika:
źródło