поиск - vim снять выделение
Vim очистить последний поиск (20)
После выполнения поиска в Vim, я получаю все выделенные события. Как я могу отключить это? Теперь я делаю очередной поиск чего-то тарабарского, которого невозможно найти.
Есть ли способ просто временно отключить выделение, а затем снова включить его, когда это необходимо снова?
Отключить постоянную подсветку поиска
Матчи не будут подсвечиваться всякий раз, когда вы выполняете поиск с использованием /
:set nohlsearch
Очистить выделение до следующего поиска
:noh
или :nohlsearch
(очищается до нажатия n или N )
Четкое выделение при нажатии ESC
nnoremap <esc> :noh<return><esc>
Очистить выделение при нажатии другой клавиши или пользовательской карты
Очистить блики при нажатии \ (обратная косая черта)
nnoremap \ :noh<return>
Очистить блики при двойном нажатии ESC
nnoremap <esc><esc> :noh<return>
Вместо того, чтобы полагаться на некоторую карту памяти, запрограммированную в вашем файле .vimrc (который не подходит для других установок), просто используйте этот хак: повторите поиск чего-то невероятного:
/asdfsddsdf
Если вы хотите быстро включить / отключить выделение, вы можете сопоставить
" 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
Если у вас установлен плагин incsearch.vim , тогда есть возможность автоматического выделения выделения после поиска:
let g:incsearch#auto_nohlsearch = 1
Чтобы очистить последний использованный шаблон поиска:
:let @/ = ""
Это не установит шаблон в пустую строку, потому что это будет соответствовать везде. Шаблон действительно очищается, например, при запуске Vim.
Мне лично нравится сопоставлять esc
с командой :noh
следующим образом:
map <esc> :noh<cr>
Недавно я написал целую статью о поиске Vim : как искать на Vanilla Vim и лучший плагин для улучшения функций поиска.
Мой путь: поиск любого не существует слова, как / aaaaaaa, и мир тихий сразу ~
Найдите маловероятную последовательность символов (смять клавиши в домашней строке):
/;alskdjf;
Это работает в vim и меньше, и легче запомнить / тип, чем @ логически более чистое решение ShaunBouckaert «очистить последний использованный шаблон поиска»:
:let @/ = ""
Потенциальным недостатком является то, что он добавляет нежелательную информацию в вашу историю поиска.
Обычно я указываю :noh
на клавишу обратной косой черты. Чтобы повторно выделить выделение, просто нажмите n , и он снова выделится.
Основываясь на ответе @ baruch-even, вы можете удалить поисковый запрос при двойном нажатии ESC в обычном режиме, используя:
nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[
С http://twitter.com/jonbho/status/2194406821
" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[
Вторая строка необходима для сопоставления с escape-ключом, поскольку Vim внутренне использует escape для представления специальных клавиш.
Установите vim-cool . Он был создан для устранения этой конкретной проблемы. Он отключает подсветку, как только вы перемещаете курсор. Будьте осторожны, это требует новой версии vim!
Чтобы отключить подсветку до следующего поиска:
:noh
Или выключите выделение полностью:
set nohlsearch
Или, чтобы переключить его:
set hlsearch!
nnoremap <F3> :set hlsearch!<CR>
Это то, что я использую (извлечено из множества разных вопросов / ответов):
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.
Я думаю, что смешение @ShaunBouckaert и 19 марта 2009 г. в 16:22 отвечает на хороший компромисс:
" Reset highlighted search
nnoremap <CR> :let @/=""<CR><CR>
Нажмите « Ввод», и выделенный текст больше не будет выделен, в то время как подсветка поиска по-прежнему включена.
Я нашел этот ответ несколько лет назад на vim.org:
Добавьте в свой .vimrc следующее:
"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>
Таким образом, после вашего поиска, просто нажмите снова вернуться в командном режиме, и подсветка исчезнет.
Я предполагаю, что исходный вопрос касался не отключения подсветки поиска, а просто очистки выделения из последнего поиска. Решение поиска строки тарабарщины, о которой упоминалось в оригинальном плакате, является тем, что я использовал в течение некоторого времени, чтобы очистить выделение от предыдущего поиска, но он уродливый и громоздкий.
Несколько предложений, которые я нашел для добавления nnoremap ...
в ~ / .vimrc, имеют здесь эффект включения vim в режим замены при запуске, что совсем не то, что я хочу. Самое простое решение, которое я нашел, это добавить строку
nmap <esc><esc> :noh<return>
к моему ~ / .vimrc. Это относится к принципу KISS и не мешает клавишам со стрелками, которые используют один <esc>. В командном режиме (или в режиме triple- <esc> из режима вставки или замены) требуется двойное <esc>, чтобы очистить выделение от предыдущего поиска, но с точки зрения пользовательского интерфейса это делает работу максимально простой.
вы можете использовать : noremap для включения / выключения для результата поиска, например
:noremap <F3> :set hls! hls?<CR>
Янус для VIM и GVIM имеет множество запекших вещей для таких новичков, как я, в том числе
<leader>hs - toggles highlight search
который именно то, что вам нужно. Просто введите \hs
в нормальном режиме. (Ключ лидера сопоставляется с \
по умолчанию.)
НТН.