Выделите все вхождение выбранного слова?

Как я могу выделить все появление выбранного слова в GVim, например, в Notepad ++?

Ответ 1

В нормальном режиме:

:set hlsearch

Затем найдите шаблон с командой / в нормальном режиме или <Ctrl>o, за которым следует / в режиме Вставки. * в обычном режиме будет искать следующее вхождение слова под курсором. Опция hlsearch выделяет все из них, если она установлена. # будет искать предыдущее вхождение слова.

Чтобы удалить подсветку предыдущего поиска:

:nohlsearch

Возможно, вы захотите сопоставить :nohlsearch<CR> с некоторым удобным ключом.

Ответ 2

Клавиша * выделяет все вхождения слова, находящегося под курсором.

Ответ 3

Я знаю, чем это действительно старый вопрос, но если кто-то заинтересован в этой функции, можете проверить этот код http://vim.wikia.com/wiki/Auto_highlight_current_word_when_idle

" Highlight all instances of word under cursor, when idle.
" Useful when studying strange source code.
" Type z/ to toggle highlighting on/off.
nnoremap z/ :if AutoHighlightToggle()<Bar>set hls<Bar>endif<CR>
function! AutoHighlightToggle()
   let @/ = ''
   if exists('#auto_highlight')
     au! auto_highlight
     augroup! auto_highlight
     setl updatetime=4000
     echo 'Highlight current word: off'
     return 0
  else
    augroup auto_highlight
    au!
    au CursorHold * let @/ = '\V\<'.escape(expand('<cword>'), '\').'\>'
    augroup end
    setl updatetime=500
    echo 'Highlight current word: ON'
  return 1
 endif
endfunction

Ответ 4

самый простой способ, введите в нормальном режиме *

Ответ 5

Поисковые решения (*, /...) перемещают курсор, что может быть неудачным.

Альтернативой является использование расширенного плагина mark.vim, затем заполните .vimrc, чтобы включить двойное нажатие триггера (я не знаю) t знать, как выбор клавиатуры может вызвать команду):

"Use Mark plugin to highlight selected word  
map <2-leftmouse> \m   

Он позволяет многократные выделения, настойчивость и т.д.

Чтобы удалить подсветку, выполните следующие действия:

  • Дважды щелкните еще раз
  • :Mark (выключить до следующего выбора)
  • :MarkClear

Ответ 6

Сначала (или в вашем .vimrc):

:set hlsearch

Затем поместите курсор над выделенным словом и нажмите *.

hlsearch означает выделение всех вхождений текущего поиска, а * означает поиск слова под курсором.

Ответ 7

set hlsearch

может быть?

Ответ 8

Включить подсветку поиска:

:set hlsearch

Затем выполните поиск слова:

/word<Enter>

Ответ 9

Сначала убедитесь, что hlsearch включен, выпустив следующую команду

:set hlsearch

Вы также можете добавить это в свой файл .vimrc как установленный

set hlsearch

теперь, когда вы используете механизм быстрого поиска в командном режиме или в обычной команде поиска, все результаты будут выделены. Чтобы двигаться вперед между результатами, нажмите "n" для перемещения назад, нажмите "N"

В обычном режиме для быстрого поиска слова под курсором и перехода к следующему вхождению в одной команде нажмите '*', вы также можете найти слово под курсором и перейти к предыдущему вхождению на нажатие '#'

В обычном режиме быстрый поиск также можно вызвать с помощью

/searchterm<Enter>

чтобы удалить блики при использовании ocuurences, я привязал это к ярлыку в моем .vimrc

:nohl

Ответ 10

Моим любимым для этого является mark.vim плагин. Он позволяет выделить несколько слов в разных цветах одновременно.

Пример скриншота

Ответ 11

Почему не просто: г /

Это выделит текущее слово под курсором и любые другие вхождения. И вам не нужно давать отдельную команду для каждого элемента, который вы ищете. Может быть, это невозможно в нечестивом gvim? Это по умолчанию vim.

* является хорошим, если вы хотите, чтобы курсор переместился на следующее вхождение. При сравнении двух вещей визуально вы часто не хотите, чтобы курсор перемещался, и это раздражало, чтобы каждый раз нажимать клавишу *.

Ответ 12

Используйте autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))

Убедитесь, что у вас IncSearch установлено что-то. например, call s:Attr('IncSearch', 'reverse'). В качестве альтернативы вы можете использовать другую группу подсветки на своем месте.

Это будет отображать все вхождения слов под курсором без задержки. Я нахожу, что задержка замедляет меня, когда я wizzing через код. Цвет подсветки будет соответствовать цвету слова, поэтому он будет соответствовать вашей схеме.

Ответ 13

  • Добавьте эти строки в свой ~/.vimrc файл

" highlight the searched items set hlsearch " F8 search for word under the cursor recursively , :copen , to close -> :ccl nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>

  1. Перезагрузите настройки с помощью :so%
  2. В нормальной модели перейдите к слову.

  3. Нажмите * Нажмите F8, чтобы искать рекурсивно ниже весь проект над словом

Ответ 14

выделить слово без перемещения курсора, plop

" highlight reg. ex. in @/ register
set hlsearch
" remap `*`/`#` to search forwards/backwards (resp.)
" w/o moving cursor
nnoremap <silent> * :execute "normal! *N"<cr>
nnoremap <silent> # :execute "normal! #n"<cr>

в ваш vimrc.

Что приятное в этом случае: g* и g# будет работать как "обычный" * и #.


Чтобы установить hlsearch off, вы можете использовать "короткую форму" (если у вас нет другой функции, которая начинается с "noh" в командном режиме): :noh. Или вы можете использовать длинную версию: :nohlsearch

Для экстремального удобства (я нахожу, что переключаю hlsearch, возможно, 20 раз в день), вы можете сопоставить что-то для переключения hlsearch следующим образом:

" search highlight toggle
nnoremap <silent> <leader>st :set hlsearch!<cr>

.:. если ваш <leader> равен \ (по умолчанию), вы можете нажать \ s t (быстро) в обычном режиме для переключения hlsearch.

Или, может быть, вы просто хотите отобразить :noh:

" search clear
nnoremap <silent> <leader>sc :nohlsearch<cr>

Вышеуказанное просто запускает :nohlsearch, поэтому (в отличие от :set hlsearch!) он будет выделять слово при следующем нажатии * или # в нормальном режиме.

веселит