如何在GVim中突出显示所选单词的所有出现,例如在Notepad ++中?
如何在GVim中突出显示所选单词的所有出现,例如在Notepad ++中?
Answers:
在普通模式下:
:set hlsearch
然后搜索与所述命令的图形/
在正常模式下,或者<Ctrl>o
随后/
在插入模式。*
在正常模式下,将在光标下搜索单词的下一个出现位置。hlsearch
如果设置,该选项将突出显示所有这些选项。#
将搜索单词的先前出现。
要删除上一个搜索的突出显示:
:nohlsearch
您可能希望映射:nohlsearch<CR>
到一些方便的键。
*
或#
通过<Ctrl>o
在正常模式下。
:nohlsearch
可以使用:noh
.vimrc
:noremap <F4> :set hlsearch! hlsearch?<CR>
用于在高光之间切换,并通过删除高光<F4>
。
该*
键将突出显示光标下所有出现的单词。
&hlsearch
打开时。
#
。
我知道这是一个非常老的问题,但是如果有人对此功能感兴趣,可以查看此代码 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>
nnoremap * *``cgn
和nnoremap # #``cgN
*
,如何关闭高亮显示?
:noh
或:nohlsearch
nnoremap <silent> * :execute "normal! *N"<cr>
和nnoremap <silent> # :execute "normal! #n"<cr>
?这些只是突出显示光标下的单词,但不会将其移到下一个出现的位置。
基于搜索的解决方案(*,/...)移动光标,这可能是不幸的。
一种替代方法是使用增强的mark.vim插件,然后完成.vimrc
使双击触发突出显示的操作(我不知道键盘选择如何触发命令):
"Use Mark plugin to highlight selected word
map <2-leftmouse> \m
它允许多个突出显示,持久性等。
要删除突出显示,请执行以下任一操作:
:Mark
(关闭直到下一个选择):MarkClear
:set noincsearch
。在我看来,它是Vim中最烦人的功能之一,也是我为全新安装禁用的第一件事。
*
将无条件移动光标。而且我看不到incsearch
会有什么烦人的事,因为这只是“向前看”,在不实际改变您的位置的情况下执行当前搜索。
incsearch
会阻止移动,但是快速测试可以确认您是正确的。我很抱歉。然而,它的超级容易地创建一个映射,以防止运动::nnoremap * *N
。我不敢相信您在执行搜索时会在屏幕上跳过光标,这并不令人讨厌。但是...这些事情完全是主观的。Vive
:let @/='hilight_this'
假设已hlsearch
启用。它突出显示文本而不会跳转,您不必更改现有设置。这将更改当前存储在搜索寄存器中的值。
首先通过发出以下命令确保hlsearch已启用
:set hlsearch
您还可以按设置将此添加到您的.vimrc文件中
set hlsearch
现在,当您在命令模式或常规搜索命令中使用快速搜索机制时,所有结果都将突出显示。要在结果之间向前移动,请按“ n”向后移动,按“ N”
在普通模式下,要快速搜索光标下方的单词并跳至一个命令中的下一个出现的单词,请按“ *”,也可以搜索光标下方的单词并按“#”移至上一个出现的单词'
在正常模式下,也可以使用
/searchterm<Enter>
要删除有关使用场合的提示,我已将其绑定到我的.vimrc中的快捷方式
:nohl
高亮显示单词而不移动光标
" 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#
仍然可以像“ normal” *
和一样工作#
。
要设置hlsearch
关闭,你可以(除非你有另一个功能是在命令模式“能剧”开始)使用“短表”: :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!
),下次您按*或#在正常模式下,它仍会突出显示单词。
干杯
为什么不只是:z /
这将突出显示光标下的当前单词以及任何其他出现的单词。而且,您不必为要搜索的每个项目提供单独的命令。也许这在邪恶的gvim中是不可用的?默认情况下它在vim中。
*仅在您希望光标移动到下一个出现位置时才是好。在视觉上比较两件事时,您通常不希望光标移动,并且每次按*键都很烦人。
~/.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>
:so%
在普通模型中,请仔细阅读。
按*按F8键以单词的形式递归搜索整个项目
例如,此插件:
只需在vimawesome.com上的光标下搜索
正如clagccs所提到的,关键是突出显示与您的搜索不冲突:https : //vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
hlsearch
多次切换,则可能要映射:set hlsearch!
而不是:set nohlsearch
。这将切换设置,而不是始终将其关闭。