Vim очистить последний поиск

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

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

+1757
источник поделиться
30 ответов

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

:noh

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

set nohlsearch

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

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>
+1448
источник

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

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

:let @/ = ""

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

+658
источник
другие ответы

Связанные вопросы


Похожие вопросы

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

:noh

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

+565
источник

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

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

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

Таким образом, после вашего поиска просто нажмите снова вернуться в командном режиме, и подсветка исчезнет.

+281
источник

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

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

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

+135
источник

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

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

-

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

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

/;alskdjf;

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

:let @/= ""

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

+37
источник
nnoremap <cr> :noh<CR><CR>:<backspace>

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

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

+31
источник

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

" Clear last search highlighting
map <Space> :noh<cr>
+30
источник

Ответы, предлагающие :noh или :nohlsearch (например, Matt McMinns), верны для временного отключения подсветки поиска - как указано в оригинальный вопрос.

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

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

По умолчанию Ctrl L в Vim очищает и перерисовывает экран. Ряд программ командной строки (в основном те, которые используют библиотеку Блокировка кепок карты для перехода в XWindows

Блокировка кепок карты для выхода в Windows
+30
источник

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

+26
источник

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

Матчи не будут подсвечиваться всякий раз, когда вы выполняете поиск, используя /

:set nohlsearch

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

:noh

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


Очистить подсветку при нажатии ESC

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

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

  • Очистить подсветку при нажатии \ (обратная косая черта)

    nnoremap \ :noh<return>
    
  • Очистить блики при ударе ESC дважды

    nnoremap <esc><esc> :noh<return>
    
+21
источник

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

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

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


Другая альтернатива:

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

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

clearmatches()

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

    |:match| commands.
+14
источник

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

:noh

Визуальная иллюстрация

+9
источник

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

let g:incsearch#auto_nohlsearch = 1

введите описание изображения здесь

+9
источник

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

<leader>hs - toggles highlight search

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

НТН.

+8
источник

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

  • sensible - Ctrl-l для экрана nohlsearch и перерисовки.
  • unimpared - [oh, ]oh и coh для управления hlsearch.
+7
источник

Это очистит подсветку поиска после updatetime миллисекунд бездействия.

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

function! SearchHlClear()
    let @/ = ''
endfunction
augroup searchhighlight
    autocmd!
    autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END
+6
источник

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

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

Просто поместите вышеприведенный фрагмент в файл .vimrc.

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

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

+6
источник

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

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>
+5
источник

Мне лично нравится отображать esc на команду :noh следующим образом:

map <esc> :noh<cr>

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

+5
источник

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

:nohl

+4
источник

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

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

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

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

+4
источник

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

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

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

+4
источник

Я думаю, что смешение @ShaunBouckaert и 19 марта 2009 г. в 16:22 отвечает - хороший компромисс:

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

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

+3
источник

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

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

+3
источник

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

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[
+3
источник

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

+3
источник

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

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

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

+1
источник

Я добавил это в мой файл vimrc.

command! H let @/=""

После того, как вы выполните поиск и хотите очистить выделенные области от вашего поиска, просто сделайте :H

+1
источник

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

/asdfsddsdf
0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос