我该怎样在GVim中高亮选定单词的所有出现,就像在Notepad++中一样?
正常模式下:
:set hlsearch
在普通模式下,使用命令/
搜索一个模式,或者在插入模式下按<Ctrl>o
,然后输入/
。在普通模式下,*
将查找光标下单词的下一个出现位置。如果设置了hlsearch
选项,则会突出显示所有单词的出现位置。#
将查找单词的上一个出现位置。
要取消先前搜索的高亮显示:
:nohlsearch
你可能希望将:nohlsearch<CR>
映射到一些方便的按键上。
*
键将突出显示光标下的单词的所有出现。
&hlsearch
打开时。 - wilhelmtell:nno <F9> :set hls!<CR>
。 - steffen我知道这是一个非常老的问题,但如果有人对此功能感兴趣,可以查看这段代码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>
奖励:计数单词函数
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>
nnoremap * *``cgn
和 nnoremap # #``cgN
。 - SergioAraujo*
后,如何关闭高亮显示? - user5359531:noh
或 :nohlsearch
- dylnmcnnoremap <silent> * :execute "normal! *N"<cr>
和nnoremap <silent> # :execute "normal! #n"<cr>
呢?它们只是突出显示光标下的单词,但不会将其移动到下一个出现位置。 - dylnmcCtrl-h
映射到取消高亮显示:noremap <C-h> :noh<cr>
。 - Andy J搜索基于光标移动的解决方案(*, /...)有时可能会不太方便。
另一种选择是使用enhanced mark.vim插件,然后完成你的.vimrc
文件以让双击触发高亮(我不知道如何使用键盘选择来触发一个命令):
"Use Mark plugin to highlight selected word
map <2-leftmouse> \m
它允许多重高亮,持久性等。
要取消高亮,请执行以下操作之一:
:Mark
(关闭直到下次选择):MarkClear
:set noincsearch
。在我看来,这是 Vim 中最烦人的功能之一,也是我在新安装中禁用的第一件事情。 - jahroy*
会无条件地移动光标。而且我看不出 incsearch
会有什么烦人之处,因为它只是 "预览" ,在不实际更改位置的情况下执行当前搜索。 - YvesgereYincsearch
就可以防止移动,但是快速测试证实你是正确的。抱歉。不过,很容易创建一个映射来防止移动::nnoremap * *N
。我不敢相信你居然不觉得在执行搜索时光标在屏幕上跳来跳去很烦人。但是这些事情完全是主观的。不同的看法,都应该被尊重。;-) - jahroyhlsearch
,你也可以执行:let @/='hilight_this'
命令来高亮文本,而不会跳转位置,并且你无需更改现有的设置。这将更改当前存储在搜索寄存器中的值。 - Ben Davis首先(或在您的.vimrc文件中):
:set hlsearch
把光标放在你想要突出显示的单词上,然后按下*
。
hlsearch
表示突出显示当前搜索的所有出现次数,*
表示搜索光标下的单词。
要在不移动光标的情况下突出显示单词,请使用“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
,可以使用“短格式”(除非您在命令模式下有另一个以“noh”开头的函数)::noh
。或者您可以使用长版本::nohlsearch
为了极大地方便(我发现自己可能每天切换hlsearch
20次左右),您可以映射某些内容来切换hlsearch
,如下所示:
" search highlight toggle
nnoremap <silent> <leader>st :set hlsearch!<cr>
.:. 如果您的<leader>
是\(默认情况下是这样),您可以在正常模式下快速按下\st来切换hlsearch
。
或者您可能只想映射:noh
:
" search clear
nnoremap <silent> <leader>sc :nohlsearch<cr>
:nohlsearch
,因此(不像:set hlsearch!
),下次你在normal模式下按下*或#时它仍会高亮显示单词。N
,因为默认情况下,N
会在相反的方向上搜索。 - markmarkmark只需在 vimawesome.com 中搜索光标下方即可。
正如clagccs所提到的那样,关键在于高亮不会与您的搜索冲突:https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
:set hlsearch
set hlsearch
/searchterm<Enter>
要去除出现的高亮显示,我已将其绑定到我的 .vimrc 快捷键中。
:nohl
启用搜索高亮:
:set hlsearch
/word<Enter>
hlsearch
,你可能需要将:set nohlsearch
映射为:set hlsearch!
。这样会切换设置而不是总是关闭它。 - David Winslow<Ctrl> o
返回到按下*
或#
的位置。 - Ruslan:noh
жӣҝд»Ј:nohlsearch
пјҢдёӨиҖ…зҡ„дҪңз”ЁзӣёеҗҢгҖӮ - crisron.vimrc
中设置:noremap <F4> :set hlsearch! hlsearch?<CR>
,用于通过<F4>
切换高亮和取消高亮。 - Chalist