Vim clear последняя поисковая подсветка - PullRequest
1756 голосов
/ 18 марта 2009

После выполнения поиска в Vim я выделяю все вхождения. Как я могу отключить это? Сейчас я делаю еще один поиск чего-то бессмысленного, что не может быть найдено.

Есть ли способ просто временно отключить выделение, а затем снова включить его при необходимости?

Ответы [ 29 ]

1448 голосов
/ 18 марта 2009

Чтобы отключить подсветку до следующего поиска:

:noh

Или полностью отключить подсветку:

set nohlsearch

Или, чтобы переключить его:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>
657 голосов
/ 18 марта 2009

Из документации VIM

Чтобы очистить последний использованный шаблон поиска:

:let @/ = ""

Это не установит шаблон в пустую строку, потому что это будет соответствовать везде. Шаблон действительно очищен, как при запуске Vim.

564 голосов
/ 18 марта 2009

Вы можете сделать

:noh

или :nohlsearch, чтобы временно отключить подсветку поиска до следующего поиска.

281 голосов
/ 19 марта 2009

Я нашел этот ответ несколько лет назад на vim.org:

Добавьте следующее к вашему .vimrc:

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

Таким образом, после поиска просто нажмите «Return» снова в командном режиме и подсветка исчезнет.

135 голосов
/ 24 июня 2009

С http://twitter.com/jonbho/status/2194406821

" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[

Вторая строка необходима для сопоставления с escape-ключом , поскольку Vim внутренне использует escape для представления специальных ключей.

37 голосов
/ 17 марта 2012

Мое оригинальное решение (ниже) было грязным и расточительным. Я сейчас использую :noh

Как и многие другие функции в Vim, правильный путь часто нелегко обнаружить.

-

(НЕ ДЕЛАЙТЕ ЭТОГО)

Поиск маловероятной последовательности символов (нажмите клавиши в домашнем ряду):

/;alskdjf;

Это работает в vim и меньше, и его легче запомнить / напечатать, чем логически более чистое решение @ ShaunBouckaert «очистить последний использованный шаблон поиска»:

:let @/ = ""

Потенциальным недостатком является то, что он добавляет мусор в историю поиска.

31 голосов
/ 09 августа 2012
nnoremap <cr> :noh<CR><CR>:<backspace>

Таким образом я избавляюсь от :noh, показанного в командной строке, при нажатии введите после поиска.

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

30 голосов
/ 29 августа 2014

Ответы, предлагающие :noh или :nohlsearch (например, Мэтта МакМинна), верны для временно отключения подсветки поиска - как задано в исходном вопросе.

Я думал, что добавлю сопоставление, которое я считаю полезным в обычном режиме:

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

По умолчанию Ctrl L в Vim очищает и перерисовывает экран. Ряд программ командной строки (в основном те, которые используют библиотеку GNU Readline , например Bash) используют одну и ту же комбинацию клавиш для очистки экрана. Эта функция полезна в ситуации, когда процесс, работающий в фоновом режиме, печатает на терминал, перезаписывая части процесса переднего плана.

Это отображение в обычном режиме также очищает подсветку самого последнего поискового запроса перед перерисовкой экрана. Я считаю, что эти две функции дополняют друг друга, и удобно использовать один Ctrl L для обоих действий вместе, а не создавать отдельное сопоставление для отключения подсветки поиска.

Примечание: noremap используется вместо map, в противном случае отображение будет рекурсивным.

Совет: Я обычно переназначаю Caps Lock в Ctrl , чтобы упростить ввод таких комбинаций клавиш; детали для этого зависят от вашего выбора ОС / оконной системы (и не по теме для этого ответа). Оба приведенных ниже совета содержат информацию о сопоставлении Caps Lock с Ctrl , а также Esc :

30 голосов
/ 23 октября 2011

Повторно отображается в моем файле .vimrc.local, быстрый и грязный, но очень функциональный:

" Clear last search highlighting
map <Space> :noh<cr>
26 голосов
/ 12 ноября 2010

Я обычно сопоставляю :noh с ключом обратной косой черты. Чтобы снова включить выделение, просто нажмите n , и оно снова будет выделено.

...