Ответ 1
Чтобы отключить подсветку до следующего поиска:
:noh
Или полностью отключите выделение:
set nohlsearch
Или, чтобы переключить его:
set hlsearch!
nnoremap <F3> :set hlsearch!<CR>
После выполнения поиска в Vim я получаю все выделенные события. Как я могу отключить это? Теперь я делаю другой поиск чего-то тарабарского, который не может быть найден.
Есть ли способ временно отключить выделение, а затем снова включить его при необходимости?
Чтобы отключить подсветку до следующего поиска:
:noh
Или полностью отключите выделение:
set nohlsearch
Или, чтобы переключить его:
set hlsearch!
nnoremap <F3> :set hlsearch!<CR>
Чтобы очистить последний использованный шаблон поиска:
:let @/ = ""
Это не приведет к установке шаблона в пустую строку, поскольку это будет соответствовать везде. Шаблон действительно очищается, например, при запуске Vim.
Вы можете сделать
:noh
или :nohlsearch
временно отключить подсветку поиска до следующего поиска.
Я нашел этот ответ несколько лет назад на vim.org:
Добавьте в свой .vimrc следующее:
"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>
Таким образом, после вашего поиска просто нажмите снова вернуться в командном режиме, и подсветка исчезнет.
От http://twitter.com/jonbho/status/2194406821
" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[
Вторая строка необходима для отображения в escape-ключ, поскольку Vim внутренне использует escape для представления специальных клавиш.
Мое оригинальное решение (ниже) было грязным и расточительным. Я сейчас пользуюсь :noh
Как и многие функции в Vim, правильный путь часто нелегко обнаружить.
-
(НЕ ДЕЛАЙТЕ ЭТОГО)
Поиск маловероятной последовательности символов (нажмите клавиши в главном ряду):
/;alskdjf;
Это работает в vim и меньше, и его легче запомнить/напечатать, чем @ShaunBouckaert, логически более чистое решение "очистить последний использованный шаблон поиска":
:let @/= ""
Потенциальным недостатком является то, что он добавляет мусор в вашу историю поиска.
nnoremap <cr> :noh<CR><CR>:<backspace>
Таким образом, я избавлюсь от :noh
, показанного в командной строке, при нажатии enter после поиска.
: походит на начало ввода новой команды, Backspace очищает ее и возвращает фокус обратно в окно редактора.
Повторно добавлен в мой файл .vimrc.local, быстрый и грязный, но очень функциональный:
" Clear last search highlighting
map <Space> :noh<cr>
Ответы, предлагающие :noh
или :nohlsearch
(например, Matt McMinns), верны для временного отключения подсветки поиска - как указано в оригинальный вопрос.
Я думал, что внес мне картографию, которую я нахожу полезной в обычном режиме:
nnoremap <C-L> :nohlsearch<CR><C-L>
По умолчанию Ctrl L в Vim очищает и перерисовывает экран. Ряд программ командной строки (в основном те, которые используют библиотеку Блокировка кепок карты для перехода в XWindows
Блокировка кепок карты для выхода в WindowsЯ обычно отношу :noh
к коду обратной косой черты. Чтобы повторно выделить выделение, просто нажмите n, и он снова выделится.
Матчи не будут подсвечиваться всякий раз, когда вы выполняете поиск, используя /
:set nohlsearch
:noh
или :nohlsearch
(очищается до нажатия n или n)
nnoremap <esc> :noh<return><esc>
Очистить подсветку при нажатии \ (обратная косая черта)
nnoremap \ :noh<return>
Очистить блики при ударе ESC дважды
nnoremap <esc><esc> :noh<return>
Это то, что я использую (извлечено из множества разных вопросов/ответов):
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.
Чтобы отключить выделение до следующего поиска
:noh
Если у вас установлен incsearch.vim plugin, тогда есть возможность автоматического выделения выделения после поиска:
let g:incsearch#auto_nohlsearch = 1
Янус для VIM и GVIM имеет ряд запеченных вещей для таких новичков, как я, в том числе
<leader>hs - toggles highlight search
что именно то, что вам нужно. Просто введите \hs
в нормальном режиме. (Ключ лидера по умолчанию отображается на \
.)
НТН.
Для этого есть два плагина "must have":
Это очистит подсветку поиска после updatetime
миллисекунд бездействия.
updatetime
по умолчанию - 4000 мс или 4 с, но я установил минус 10 с. Важно отметить, что 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.
Это самый удобный способ показать и скрыть поисковый запрос с помощью нажатия клавиши с надписями
Для получения дополнительной информации проверьте документацию http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
Еще одно решение, объединив 2 лучших ответа:
"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>
Мне лично нравится отображать esc
на команду :noh
следующим образом:
map <esc> :noh<cr>
Недавно я написал целую статью о поиске в Vim: как искать в Vanilla Vim и лучший плагин для улучшения функций поиска.
Я просто использую простой nohl ниже, и никакие плагины не нужны.
:nohl
Я предполагаю, что исходный вопрос касался не отключения подсветки поиска, а просто очистки выделения из последнего поиска. Решение поиска строки таблеток, на которой упоминается оригинальный плакат, - это тот, который я использовал некоторое время, чтобы очистить выделение от предыдущего поиска, но он уродливый и громоздкий.
Несколько предложений, которые я нашел для добавления nnoremap ...
в ~/.vimrc, имеют здесь эффект включения vim в режим замены при запуске, что совсем не то, что я хочу. Самое простое решение, которое я нашел, это добавить строку
nmap <esc><esc> :noh<return>
к моему ~/.vimrc. Это относится к принципу KISS и не мешает клавишам со стрелками, которые используют одиночный <esc> делает. Двойной <esc> требуется в командном режиме (или в режиме triple- <esc> из режима вставки или замены), чтобы очистить выделение от предыдущего поиска, но с точки зрения пользовательского интерфейса это делает работу максимально простой.
Я использую следующее в своем ~/.vimrc
nnoremap <Leader><space> :noh<Enter>
Это упрощает и ускоряет очистку текущего выделенного поиска. Мой ключ-лидер отображается на \
, поэтому это действие очень легко выполнить с помощью моего правого мизинца и большого пальца.
Я думаю, что смешение @ShaunBouckaert и 19 марта 2009 г. в 16:22 отвечает - хороший компромисс:
" Reset highlighted search
nnoremap <CR> :let @/=""<CR><CR>
Нажмите Enter, и выделенный текст больше не будет выделен, в то время как подсветка поиска по-прежнему включена.
вы можете использовать : noremap для включения/выключения для результата поиска, например,
:noremap <F3> :set hls! hls?<CR>
На основе ответа @baruch-even вы можете удалить поисковый запрос на ESC двойным нажатием в режиме обычный, используя:
nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[
Установите vim-cool. Он был создан для решения этой конкретной проблемы. Выключение подсветки, как только вы перемещаете курсор. Имейте в виду, что требуется последняя версия vim!
Мне это тоже не нравится. Мне показалось утомительным входить :nohl
все время... поэтому я поместил следующее отображение в мой .vimrc
noremap <C-_> :nohl<cr>:<backspace>
Первый бит (:nohl<cr>
) очищает подсветку; второй бит (:<backspace>
) - хитрость для очистки командной строки. Поиск все еще находится в фоновом режиме, поэтому, если вы просто нажмете n
он снова выделится и перенесет вас к следующему появлению.
Я добавил это в мой файл vimrc
.
command! H let @/=""
После того, как вы выполните поиск и хотите очистить выделенные области от вашего поиска, просто сделайте :H
Вместо того, чтобы полагаться на некоторую карту памяти, запрограммированную в вашем файле .vimrc(который не поддерживается для других установок), просто используйте этот хак: повторите поиск чего-то невероятного:
/asdfsddsdf