Я заметил, что когда я использую :nohlsearch
это, это на самом деле не делает то же самое, что и :set nohlsearch
.
В частности, hlsearch
настройка фактически не отключается (что и происходит :set hlsearch
).
Чтобы продемонстрировать, что я имею в виду:
:set hlsearch
:nohlsearch
:echo &hlsearch
Это печатает 1
( hlsearch все еще установлен! )
:set hlsearch
:set nohlsearch
:echo &hlsearch
Это происходит 0
потому, что мы отключили hlsearch стандартным способом, чтобы отключить настройку в vim.
Так что мне интересно, потому что должна быть какая-то реальная причина :nohlsearch
существования команды ex.
Причина, по которой меня это волнует, заключается в том, что теперь у меня есть потребность в моих сценариях vim, чтобы проверить, активна ли подсветка поиска, и, поскольку я использовал :nohlsearch
вместо «: set nohlsearch» в других моих сценариях, мой &hlsearch
тест всегда возвращается 1
. Поэтому мне интересно, что я изменяю, больше не используя команду nohlsearch
ex.
:nohlsearch
или нет ... Я думаю, что в его отсутствие мне приходится прибегать к отслеживанию всех:nohlsearch
вызовов с помощью переменной.nnoremap <silent> <expr> <boundkey> SearchHighlight()
гдеSearchHighlight()
может возвращать строку":silent nohlsearch\<CR>"
. Также спасибо заv:hlsearch
совет, как раз то, что мне было нужно.Ваш сценарий требует, чтобы текущее состояние выделения было известно?
Чтобы отключить
hlsearch
только текущий поиск, я используюCtrl-l
это в моем .vimrc:Подсветка поиска возвращается при следующем поиске при использовании вышеуказанной команды.
Ctrl-l
это удобно, потому что это нормальное использование, чтобы очистить и перерисовать экран.Чтобы постоянно включать или отключать состояние подсветки поиска, я использую F3 в качестве переключателя:
источник