Как переключить видимость подсветки поиска в Vim, не отключая ее

Что я хотел бы, так это отобразить одну клавишу, например, F4, чтобы нажатие F4 переключало видимость основных элементов поиска, и, чтобы начало нового поиска включало видимость независимо от текущей видимости.

Что я пробовал:

  1. Переключение F4 на :nohlsearch временно отключает видимость подсветки без отключения настройки hlsearch, но не переключает видимость обратно.
  2. Сопоставление F4 с :set hlsearch! переключает вкл/выкл, но я не хочу отключать настройку hlsearch, только настройку видимости. Если hlsearch выключен, то он не возвращается автоматически при новом поиске.

Похоже, не существует противоположной формы :nohlsearch, а сама команда имеет проблемы с вызовом из функции.

Я нашел похожие вопросы, но они не дают ответа.

Обновление:
Первый комментарий дает именно то, о чем я спрашивал, воспроизведено ниже:

let hlstate=0
nnoremap  :if (hlstate == 0) \| nohlsearch \| else \| set hlsearch \| endif \| let hlstate=1-hlstate

(N.B. для тех, кто использует это --- запихивание карты в одну строку вместо использования функции необходимо, поскольку вы не можете выполнить изменение подсветки внутри функции.)

Смежный вопрос для немного другой функциональности: https://stackoverflow.com/a/16750393/1176650

20
задан Community 23 May 2017 в 11:53
поделиться