После выполнения поиска в Vim я выделяю все события. Как я могу отключить это? Сейчас я делаю еще один поиск чего-то бессмысленного, что не может быть найдено.
Есть ли способ просто временно отключить выделение, а затем снова включить его при необходимости?
nnoremap <esc> :noh<return><esc>
Решение было предложено @StewartJohnson хорошо работает в GUI ВИМ, но вызывает проблемы с помощью клавиш со стрелками и другими ESC-закодированные ключи при запуске Vim в терминале. Не положить его в~/.vimrc
без упаковки его вif has('gui_running')
...end
.Ответы:
Чтобы отключить подсветку до следующего поиска:
Или полностью отключите подсветку:
Или, чтобы переключить это:
источник
:noh
работает лучше.set nohlsearch
отключит подсветку для следующих поисков. Поведение:noh
очень отличается: выделение будет автоматически включено, когда вы выполняете новый поиск или даже когда вы делаете что-то, связанное с текущим поиском (например, когда вы печатаете,n
чтобы перейти к следующему элементу).'\/'
(или сmap <Leader>/ :nohlsearch<CR>
Из документации VIM
Чтобы очистить последний использованный шаблон поиска:
Это не установит шаблон в пустую строку, потому что это будет соответствовать везде. Шаблон действительно очищен, как при запуске Vim.
источник
:command C let @/=""
Использование этого позволяет набирать текст,:C
чтобы очистить строку поиска ... очень быстро и не влияет на будущий поиск или выделение.:he registers
). Vim имеет несколько различных встроенных регистров, в которых хранится текст, иногда для восстановления данных, иногда для последнего поиска и т. Д. Когда вы выполняете поиск, vim помещает шаблон в регистр "/", на который вы ссылаетесь@/
. Вы также можете присваивать значения регистрам, используя@regname=value
гдеregname
это имя регистра. Итак,@/=""
просто установите регистр "/" в пустую строку (за исключением того, что для регистра "/" vim очистит последний поиск, если он содержит пустую строку).noremap <silent> <c-_> :let @/ = ""<CR>
Ты можешь сделать
или
:nohlsearch
временно отключить подсветку поиска до следующего поиска.источник
Я нашел этот ответ несколько лет назад на vim.org:
Добавьте следующее в ваш .vimrc:
Таким образом, после поиска просто нажмите кнопку возврата еще раз в командном режиме, и подсветка исчезнет.
источник
n
чтобы найти следующее вхождение (которое будет выделено снова). Кстати, при написании сценариев я бы избегал сокращенной формы и вместо этого писал:nohlsearch
.С http://twitter.com/jonbho/status/2194406821
Вторая строка необходима для сопоставления с escape-ключом, поскольку Vim внутренне использует escape для представления специальных ключей.
источник
Мое оригинальное решение (ниже) было грязным и расточительным. Я сейчас пользуюсь
:noh
Как и многие функции в Vim, правильный путь часто нелегко обнаружить.
-
(НЕ ДЕЛАЙТЕ ЭТОГО)
Поиск маловероятной последовательности символов (нажмите клавиши в домашнем ряду):
/;alskdjf;
Это работает в vim и меньше, и его легче запомнить / напечатать, чем логически более чистое решение @ ShaunBouckaert «очистить последний использованный шаблон поиска»:
:let @/ = ""
Потенциальным недостатком является то, что он добавляет мусор в вашу историю поиска.
источник
:nohl
команды. Узнав о последнем, я немедленно прекратил эти поиски./$4
. Это не просто маловероятно, чтобы соответствовать чему-либо, но на самом деле совершенно невозможно.$
должен всегда сопровождаться символом новой строки или быть концом файла, а 4 не является ни новой строкой, ни концом файла. (Причина 4 именно в том, что она находится на одной и той же клавише, поэтому набрать ее очень легко)Повторно отображается в моем файле .vimrc.local, быстрый и грязный, но очень функциональный:
источник
Таким образом я избавляюсь от
:noh
показанного в командной строке при нажатииenter после поиска.:это как начать ввод новой команды, Backspaceочистить ее и вернуть фокус в окно редактора.
источник
[a-z]
и такие символы.:<Backspace>
, вы можете просто добавить<silent>
после того , какnnoremap
сказать Vim , чтобы не отображать какой - либо вывод в командной области:nnoremap <silent> <cr> :noh<CR><CR>
.Ответы, предлагающие
:noh
или:nohlsearch
(например, Matt McMinn's), являются правильными для временно отключения подсветки поиска - как было задано в исходном вопросе.Я думал, что добавлю сопоставление, которое я считаю полезным в обычном режиме:
По умолчанию CtrlLв Vim очищает и перерисовывает экран. Некоторые программы командной строки (в основном те, которые используют библиотеку GNU Readline , например Bash) используют одну и ту же комбинацию клавиш для очистки экрана. Эта функция полезна в ситуации, когда процесс, работающий в фоновом режиме, печатает на терминал, перезаписывая части процесса переднего плана.
Это отображение в обычном режиме также очищает подсветку самого последнего поискового запроса перед перерисовкой экрана. Я считаю, что эти две функции дополняют друг друга, и удобно использовать одну CtrlLдля обоих действий вместе, а не создавать отдельное сопоставление для отключения подсветки поиска.
NB:
noremap
используется, а неmap
как иначе, отображение будет рекурсивным.Совет: я обычно переназначаю, Caps Lockчтобы Ctrlбыло легче набирать такие комбинации клавиш; детали для этого зависят от вашего выбора ОС / оконной системы (и не по теме для этого ответа). Оба следующие советы включают информацию о отображении Caps Lockна Ctrl, а также Esc:
источник
Я обычно сопоставляю
:noh
с ключом обратной косой черты. Чтобы nснова включить выделение, просто нажмите , и оно снова будет выделено.источник
Отключить подсветку поиска навсегда
Матчи не будут выделены, когда вы выполняете поиск, используя /
Очистить выделение до следующего поиска
или
:nohlsearch
(очищается до nили Nнажата)Очистить подсветку при нажатии ESC
Очистить подсветку при нажатии другой клавиши или пользовательской карты
Очистить блики при нажатии \(обратная косая черта)
Четкие блики на удары в ESCдва раза
источник
nnoremap <silent> <esc> :noh<return><esc>
Решение хорошо работает в GUI Vim, но вызывает серьезные проблемы с клавишами со стрелками и другими ESC-закодированных ключами при запуске Vim в терминале. Не положить его в~/.vimrc
без упаковки его вif has('gui_running')
...end
. Также рассмотрите возможность добавления команды,<silent>
которая не мигает:noh
в строке состояния.Это то, что я использую (извлечено из множества разных вопросов / ответов):
С помощью «double» Escвы удаляете выделение, но как только вы начинаете поиск снова, выделение появляется снова.
Другая альтернатива:
Согласно документации vim:
источник
.vimrc
и вставьте в него следующую запись:nnoremap <silent> <Esc><Esc> :let @/=""<CR>
@/=""
помощью побочного эффекта -n
не работает, чтобы вернуть ваш поиск. Я предпочитаю:noh
который сохраняет предыдущий поиск в реестре для повторного использования.Отключить подсветку до следующего поиска
источник
Если у вас установлен плагин incsearch.vim , то есть настройка для автоматической очистки выделения после поиска:
источник
У Janus для VIM и GVIM есть несколько интересных вещей для таких новичков, как я, включая
что именно то, что вам нужно. Просто введите
\hs
в обычном режиме. (Ключ лидера сопоставлен с\
по умолчанию.)НТН.
источник
Для этого есть два «обязательных» плагина:
Ctrl-l
для nohlsearch и перерисовки экрана.[oh
,]oh
иcoh
для управления hlsearch.источник
co
наyo
v2, так что этоyoh
. См. Github.com/tpope/vim-unimpaired/blob/v2.0/doc/unimpaired.txt и github.com/tpope/vim-unimpaired/issues/150coh
все еще работает, хотя есть сообщение, предлагающее использовать,yoh
если вы используетеcoh
Выключите выделение, как только вы переместите курсор:
Установите vim-cool . Он был создан для решения этой конкретной проблемы. Выключение подсветки, как только вы перемещаете курсор. Имейте в виду, что требуется последняя версия vim!
источник
Это очистит область поиска после
updatetime
миллисекунд бездействия.updatetime
по умолчанию 4000 мс или 4 с, но я установил свой на 10 с. Важно отметить, чтоupdatetime
это больше, чем просто так, поэтому прочитайте документы, прежде чем изменить его.источник
Если вы хотите быстро включить / отключить подсветку , вы можете сопоставить ключ с
Просто поместите приведенный выше фрагмент в ваш файл .vimrc.
Для меня это наиболее удобный способ показать и скрыть подсветку поиска нажатием одной кнопки
Для получения дополнительной информации проверьте документацию http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
источник
Еще одно решение, объединяющее 2 главных ответа:
источник
@/=""
помощью побочного эффекта -n
не работает, чтобы вернуть ваш поиск. Я предпочитаю:noh
который сохраняет предыдущий поиск в реестре для повторного использования. Вы можете связать<F3>
это сnnoremap <F3> :noh<CR>
Мне лично нравится отображать
esc
команду:noh
следующим образом:map <esc> :noh<cr>
Недавно я написал целую статью о поиске в Vim : как искать в Vanilla Vim и лучший плагин для улучшения функций поиска.
источник
Я просто использую простой nohl ниже и никаких плагинов не требуется.
:nohl
источник
Я думаю, что первоначальный вопрос касался не отключения подсветки поиска, а просто очистки выделения из последнего поиска. Решение поиска бессмысленной строки, о которой упоминал оригинальный постер, я использовал в течение некоторого времени, чтобы очистить выделение от предыдущего поиска, но это уродливо и громоздко.
Несколько предложений, которые я нашел для добавления
nnoremap ...
в ~ / .vimrc, приводят к тому, что при запуске vim переводится в режим замены, а это совсем не то, что мне нужно. Самое простое решение, которое я нашел, это добавить строкук моему ~ / .vimrc. Это соответствует принципу KISS и не мешает клавишам со стрелками, как это делает один <esc>. Двойной <esc> требуется в командном режиме (или тройной <esc> из режима вставки или замены), чтобы очистить выделение из предыдущего поиска, но с точки зрения пользовательского интерфейса это делает операцию максимально простой.
источник
nmap <esc><esc> :noh<return> - to turn off search highlighting and nmap <esc>` :set hlsearch<return> - to turn on search highlighting
Я использую следующее в моем
~/.vimrc
nnoremap <Leader><space> :noh<Enter>
Это позволяет легко и быстро очистить текущий выделенный поиск. Ключ моего лидера сопоставлен,
\
так что это позволяет очень легко выполнить действие моим правым мизинцем.источник
Я думаю, что смешивание ответов @ShaunBouckaert и 19 марта 2009 г. в 16:22 - хороший компромисс:
Нажмите, Enterи выделенный текст больше не будет выделен, а подсветка поиска все еще будет включена.
источник
вы можете использовать : noremap, чтобы включить / выключить результат поиска, как это
:noremap <F3> :set hls! hls?<CR>
источник
Основываясь на ответе @ baruch-even, вы можете удалить критерий поиска при ESCдвойном нажатии в обычном режиме с помощью:
источник
<esc>
хорошо работает в GUI vim, но вызывает серьезные проблемы с клавишами со стрелками и другими ESC-кодированными клавишами при запуске vim в терминале. Не положить его в~/.vimrc
без упаковки его вif has('gui_running')
...end
. Также рассмотрите возможность добавления команды,<silent>
которая не мигает:noh
в строке состояния.Мне это тоже не нравится. Я находил это утомительным, чтобы входить
:nohl
все время ... поэтому я поместил следующее отображение в моем.vimrc
Первый бит (
:nohl<cr>
) очищает подсветку; второй бит (:<backspace>
) - это трюк для очистки командной строки. Поиск все еще находится в фоновом режиме, поэтому, если вы просто нажмете,n
он снова выделится и перенесет вас к следующему вхождению.источник
Я добавил это в мой
vimrc
файл.command! H let @/=""
После того, как вы выполните поиск и хотите очистить выделенные области от вашего поиска, просто сделайте
:H
источник
В качестве альтернативы вы можете добавить сопоставление в ваш файл .vimrc как,
и тогда вы можете нажать
в любое время очистить выделенный текст
источник