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

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

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

Ответы

Ответ 1

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

:noh

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

set nohlsearch

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

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>

Ответ 2

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

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

:let @/ = ""

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

Ответ 3

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

:noh

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

Ответ 4

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

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

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

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

Ответ 6

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

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

-

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

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

/;alskdjf;

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

:let @/= ""

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

Ответ 7

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

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

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

Ответ 8

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

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

Ответ 9

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

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

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

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

Блокировка кепок карты для выхода в Windows

Ответ 10

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

Ответ 11

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

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

:set nohlsearch

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

:noh

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


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

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

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

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

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

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

Ответ 12

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

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.

Ответ 13

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

:noh

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

Ответ 14

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

let g:incsearch#auto_nohlsearch = 1

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

Ответ 15

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

<leader>hs - toggles highlight search

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

НТН.

Ответ 16

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

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

Ответ 17

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

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

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

Ответ 18

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

" 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

Ответ 19

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

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

Ответ 21

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

:nohl

Ответ 22

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

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

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

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

Ответ 23

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

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

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

Ответ 24

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

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

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

Ответ 25

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

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

Ответ 26

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

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

Ответ 27

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

Ответ 28

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

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

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

Ответ 29

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

command! H let @/=""

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

Ответ 30

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

/asdfsddsdf