14 ответов:
в нормальном режиме:
:set hlsearchзатем найдите шаблон с помощью команды
/в обычном режиме, или<Ctrl>oследовал по/в режиме вставки.*в обычном режиме будет искать следующее вхождение слова под курсором. Элементhlsearchопция выделит все из них, если установлен.#будет искать предыдущее вхождение слова.чтобы удалить изюминку предыдущего поиска:
:nohlsearchвозможно, вы захотите отобразить
:nohlsearch<CR>к какому-то удобному ключу.
Я знаю, что это действительно старый вопрос, но если кто-то заинтересован в этой функции, может проверить этот код 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
самый простой способ, набрать в обычном режиме
*у меня также есть эти сопоставления, чтобы включить и отключить
"highligh search enabled by default set hlsearch "now you can toggle it nnoremap <S-F11> <ESC>:set hls! hls?<cr> inoremap <S-F11> <C-o>:set hls! hls?<cr> vnoremap <S-F11> <ESC>:set hls! hls?<cr> <bar> gvвыберите слово, нажав на него
set mouse=a "Enables mouse click nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>Бонус: CountWordFunction
fun! CountWordFunction() try let l:win_view = winsaveview() let l:old_query = getreg('/') let var = expand("<cword>") exec "%s/" . var . "//gn" finally call winrestview(l:win_view) call setreg('/', l:old_query) endtry endfun " Bellow we set a command "CountWord" and a mapping to count word " change as you like it command! -nargs=0 CountWord :call CountWordFunction() nnoremap <f3> :CountWord<CR>выбор слова с помощью мыши и подсчета вхождений сразу: OBS: обратите внимание, что в этой версии у нас есть команда "CountWord" в конце
nnoremap <silent> <2-LeftMouse> :let @/='\V\<'.escape(expand('<cword>'), '\').'\>'<cr>:set hls<cr>:CountWord<cr>
поиск решения (*,/...) переместить курсор, который может быть неудачным.
альтернативой является использование расширенная Марка.ВИМ плагин, а затем завершить
.vimrcчтобы дважды щелкнуть подсветку триггера (я не знаю, как выбор клавиатуры может вызвать команду):"Use Mark plugin to highlight selected word map <2-leftmouse> \mЭто позволяет несколько раскрасок, настойчивость и т. д.
чтобы удалить подсветку, либо:
- двойная нажмите еще раз
:Mark(выключите до следующего выбора):MarkClear
первый (или в вашем .vimrc):
:set hlsearchзатем поместите курсор на слово, которое вы хотите выделить, и нажмите
*.
hlsearchзначит выделить все вхождения текущего поиска, и*означает поиск слова под курсором.
сначала убедитесь, что hlsearch включен, выполнив следующую команду
:set hlsearchвы также можете добавить это в свой .vimrc файл в виде набора
set hlsearchтеперь, когда вы используете механизм быстрого поиска в командном режиме или обычную команду поиска, все результаты будут выделены. Чтобы двигаться вперед между результатами, нажмите 'N', чтобы двигаться в обратном направлении нажмите 'Н'
в нормальном режиме, чтобы выполнить быстрый поиск слова под курсором и перейти к следующему вхождение в одной команде нажмите '*', вы также можете найти слово под курсором и перейти к предыдущему вхождению, нажав'#'
в обычном режиме быстрый поиск также может быть вызван с помощью
/searchterm<Enter>чтобы удалить основные моменты при использовании ocuurences ,я привязал это к ярлыку в моем.vimrc
:nohl
мой любимый для этого является Марк.ВИМ плагин. Это позволяет выделить несколько слов в разных цветах одновременно.
использовать
autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))убедитесь, что у вас есть
IncSearchустановить что-то. е.гcall s:Attr('IncSearch', 'reverse'). Кроме того, вы можете использовать другую группу подсветки на своем месте.Это позволит выделить все вхождения слова под курсором без задержек. Я нахожу, что задержка замедляет меня, когда я колдую через код. Цвет подсветки будет соответствовать цвету слова, поэтому он остается в соответствии с вашей схемой.
Почему бы и нет: z/
это выделит текущее слово под курсором и любые другие вхождения. И вам не нужно давать отдельную команду для каждого элемента, который вы ищете. Возможно, это не доступно в нечестивом gvim? Это в vim по умолчанию.
* Это только хорошо, если вы хотите, чтобы курсор переместился к следующему вхождению. При визуальном сравнении двух вещей вы часто не хотите, чтобы курсор перемещался, и это раздражает, чтобы каждый раз нажимать клавишу*.
- добавить эти строки в свой
~/.vimrcfile
" 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>
- перезагрузите настройки с помощью
:so%в нормальной модели перейти на слово.
нажмите * нажмите F8 для рекурсивного поиска ниже всего проекта над словом
чтобы выделить слово без перемещения курсора, 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#все равно будет работать как "нормальный"*и#.
установить
hlsearchoff, вы можете использовать "короткую форму" (если у вас нет другой функции, которая начинается с "noh" в командном режиме)::noh. Или вы можете использовать длинную версию::nohlsearchдля крайнего удобства (я обнаружил, что переключаю
hlsearchможет быть, 20 раз в день), Вы можете сопоставить что-то для переключенияhlsearchвот так:" search highlight toggle nnoremap <silent> <leader>st :set hlsearch!<cr>.:. если ваш
<leader>и \ (по умолчанию), вы можете нажать \st (быстро) в нормальный режим переключенияhlsearch.или, может быть, вы просто хотите иметь
:nohmapped:" search clear nnoremap <silent> <leader>sc :nohlsearch<cr>выше просто работает
:nohlsearch(в отличие от:set hlsearch!) он по-прежнему будет выделять слово в следующий раз, когда вы нажмите * или # in нормальный режим.ура
Comments