поиск - 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


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

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

:let @/ = ""

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



Мой путь: поиск любого не существует слова, как / aaaaaaa, и мир тихий сразу ~


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

/;alskdjf;

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

:let @/ = ""

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


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


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

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

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

:noh


С 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 в нормальном режиме. (Ключ лидера сопоставляется с \ по умолчанию.)

НТН.







highlight