Notepad++ 有一个功能我觉得非常有用,而且在其他地方找不到,那就是突出显示与当前选定的文本相同的其他文本。
vi(m) 是否有类似的可能性?(当然有。但我该如何实现呢?)也就是说,以下任何一个:
如果我处于可视模式并选择了文本:突出显示相同的文本
如果我已经搜索过
/foo
,则突出显示所有实例foo
。如果我位于字符串(一系列字符、数字或下划线)的开头,则突出显示所有其他匹配的字符串(首选解决方案)。
最后一个类似于右括号匹配,在我看来是最有用的。
编辑:对于我的第二个用例,我找到了一个解决方案(也就是说,Google 找到了它......):
:set hls
但其他的仍然存在。
答案1
对于你的第三个要求,
nnoremap , :mat Error "<C-R><C-W>"<CR>
将其放入 vimrc 文件中。按逗号可突出显示光标处出现的所有单词。
此外,按 * 或 # 可突出显示光标处出现的所有字符串,hl搜索已设置
编辑:
对于你的第一个要求,
vnoremap <silent> , :<C-U>
\let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
\gvy:mat Error "<C-R><C-R>=substitute(
\escape(@", '/".*$^~['), '_s+', '\_s\+', 'g')<CR>"<CR>
\gV:call setreg('"', old_reg, old_regtype)<CR>
找到了这个这里. 根据您的需要进行修改。
答案2
:help hlsearch
When there is a previous search pattern, highlight all its matches.
所以,把
set hlsearch
到你的 vimrc
答案3
对于门号 3,这就是 # 键的作用。它还会跳转到上一个此类字符串的开头。Asterisk(*) 的作用相反:跳转到下一个此类字符串的开头。