Vim очистить последнюю подсветку поиска
после выполнения поиска в Vim, я вам все вхождения подсвечиваются. Как я могу это отключить? Теперь я снова ищу какую-то тарабарщину, которую не могу найти.
есть ли способ просто временно отключить подсветку, а затем снова включить ее, когда это необходимо?
30 ответов
чтобы отключить подсветку до следующего поиска:
:noh
или полностью отключить подсветку:
set nohlsearch
или, чтобы изменить его:
set hlsearch!
nnoremap <F3> :set hlsearch!<CR>
чтобы очистить последний используемый шаблон поиска:
:let @/ = ""
это не будет устанавливать шаблон в пустую строку, потому что это будет соответствовать повсюду. Шаблон действительно очищается, как при запуске Vim.
Я нашел этот ответ много лет назад 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.
Янус для VIM и GVIM имеет ряд запеченных вещей для новичков, таких как я, в том числе
<leader>hs - toggles highlight search
это именно то, что вам нужно. Просто введите \hs
в нормальном режиме. (Ключ лидера отображается на \
по умолчанию.)
HTH.
Если у вас incsearch.плагин vim установлен, то есть параметр, чтобы автоматически очистить подсветку после поиска:
let g:incsearch#auto_nohlsearch = 1
это очистит выделение поиска после 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>
Я предполагаю, что первоначальный вопрос касался не отключение подсветка поиска, но просто очистка подсветки от последнего поиска. Решение поиска строки тарабарщины, о которой упоминал оригинальный плакат, я использую в течение некоторого времени, чтобы очистить подсветку от предыдущего поиска, но это уродливо и громоздко.
несколько предложений, которые я нашел, чтобы добавить 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
он будет повторно выделить и принять вас к следующему возникновению.