Vim очистить последнюю подсветку поиска

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

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

30 ответов


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

:noh

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

set nohlsearch

или, чтобы изменить его:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>

С документация VIM

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

:let @/ = ""

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


можно сделать

:noh

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


Я нашел этот ответ много лет назад vim.org:

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

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

таким образом, после поиска просто нажмите return еще раз в командном режиме, и подсветка исчезнет.


от http://twitter.com/jonbho/status/2194406821

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

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


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

/;alskdjf;

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

:let @/ = ""

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


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

" Clear last search highlighting
map <Space> :noh<cr>

nnoremap <cr> :noh<CR><CR>:<backspace>

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

: это как начать вводить новую команду,Backspace очищает его и возвращает внимание обратно в окно редактора.


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


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

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

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

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

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

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

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


отключить подсветку поиска навсегда

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

:set nohlsearch

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

:noh

или :nohlsearch (очищает до n или N нажата)


очистить выделение при нажатии ESC

nnoremap <esc> :noh<return><esc>

очистить выделение при нажатии другой клавиши или на заказ карта

  • очистить основные моменты при нажатии \ (косая черта)

    nnoremap \ :noh<return>
    
  • очистить основные моменты при ударе ESC два раза

    nnoremap <esc><esc> :noh<return>
    

Это то, что я использую (извлечено из множества различных вопросов / ответов):

nnoremap <silent> <Esc><Esc> :let @/=""<CR>

С "двойным" Esc вы удаляете подсветку, но как только вы снова ищете, подсветка появляется снова.


другой вариант:

nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>

согласно документации vim:

clearmatches()

    Clears all matches previously defined by |matchadd()| and the

    |:match| commands.

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

:noh

Visual Illustration


Янус для VIM и GVIM имеет ряд запеченных вещей для новичков, таких как я, в том числе

<leader>hs - toggles highlight search

это именно то, что вам нужно. Просто введите \hs в нормальном режиме. (Ключ лидера отображается на \ по умолчанию.)

HTH.


Если у вас incsearch.плагин vim установлен, то есть параметр, чтобы автоматически очистить подсветку после поиска:

let g:incsearch#auto_nohlsearch = 1

enter image description here


это очистит выделение поиска после updatetime миллисекунд простоя.

updatetime по умолчанию 4000ms или 4s, но я установил мой 10s. Важно отметить, что updatetime делает больше, чем просто это, поэтому прочитайте документы, прежде чем изменять его.

function! SearchHlClear()
    let @/ = ''
endfunction
augroup searchhighlight
    autocmd!
    autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END

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

" Press F4 to toggle highlighting on/off, and show current value.
:noremap <F4> :set hlsearch! hlsearch?<CR>

просто поместите вышеуказанный фрагмент в вас .файл vimrc.

Это самый удобный способ для меня, чтобы показать и скрыть подсветку поиска с помощью клавиши sing stroke

для получения дополнительной информации проверьте документацию http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches


еще одно решение, объединив 2 лучших ответа:

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>

для этого есть два плагина "must have":

  1. разумный - Ctrl-l для экрана nohlsearch и перерисовки.
  2. unimpared - [oh, ]oh и coh для управления hlsearch.

Я просто использую простой nohl ниже, и никакие плагины не нужны.

:nohl


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

несколько предложений, которые я нашел, чтобы добавить nnoremap ... to~/.vimrc имеет эффект здесь перевода vim в режим замены при запуске, что совсем не то, что я хочу. Самое простое решение, которое я нашел, - добавить строку

nmap <esc><esc> :noh<return>

в ~/.vimrc. Это соответствует принципу KISS и не мешает клавишам со стрелками, что делает использование одного . Двойной - требуется в командном режиме (или тройной- из режима вставки или замены), чтобы очистить подсветку от предыдущего поиска, но с точки зрения пользовательского интерфейса это делает операцию максимально простой.


Я использую следующее В моем ~/.vimrc

nnoremap <Leader><space> :noh<Enter>

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


Я думаю, что смешивание @ShaunBouckaert и Mar 19 ' 09 В 16: 22 answers-хороший компромисс:

" Reset highlighted search
nnoremap <CR> :let @/=""<CR><CR>

пресс Enter и выделенный текст больше не выделяется, в то время как выделение поиска по-прежнему включено.


можно использовать :noremap для включения / выключения для результата поиска, как это

:noremap <F3> :set hls! hls?<CR>


на основе @baruch-даже ответ, вы можете удалить поисковый запрос на ESC двойное нажатие, находясь в нормальный режим с:

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[

Я лично люблю карту esc команда :noh следующим образом:

map <esc> :noh<cr>

недавно я написал целую статью о Vim search: как искать на vanilla Vim и лучший плагин для улучшения функций поиска.


установить vim-cool. Он был создан для решения этой конкретной проблемы. Он отключает подсветку, как только вы перемещаете курсор. Будьте осторожны, хотя, это требует недавней версии vim!


вместо того, чтобы полагаться на некоторую клавиатуру, запрограммированную в вашем .файл vimrc (который не держится для других установок), просто используйте этот хак: повторный поиск чего-то невероятного:

/asdfsddsdf

мне это тоже не нравится. Мне было скучно входить :nohl все время ... поэтому я поместил следующее отображение в my .vimrc

noremap <C-_> :nohl<cr>:<backspace>

Первый БИТ (:nohl<cr>) очищает выделение; второй бит (:<backspace>) является трюком для очистить командная строка. Поиск все еще есть в фоновом режиме, поэтому, если вы просто нажмете n он будет повторно выделить и принять вас к следующему возникновению.


мой способ: поиск любого не существующего слова, вроде / аааааааа , и мир затихает сразу~