Vim突出显示相似的字符,包括特殊字符

Vim突出显示相似的字符,包括特殊字符,vim,Vim,按下shift+*将突出显示vim中类似的单词,但是,单词似乎是字符串的一部分,直到下一个特殊字符。因此,如果我的标记位于-string-I-want-to-find的s上,它将突出显示文件中“string”的所有实例 有没有一种方法可以让我做同样的事情,但不是搜索子集,而是搜索整个字符串string-I-want-to-find?该*命令对单词有效;属于该组的字符由'iskeyword'选项控制(每个缓冲区)。正如Peter Rincker已经评论的那样,您可以通过 :setlocal isk

按下shift+*将突出显示vim中类似的单词,但是,单词似乎是字符串的一部分,直到下一个特殊字符。因此,如果我的标记位于-string-I-want-to-find的s上,它将突出显示文件中“string”的所有实例


有没有一种方法可以让我做同样的事情,但不是搜索子集,而是搜索整个字符串
string-I-want-to-find

*
命令对单词有效;属于该组的字符由
'iskeyword'
选项控制(每个缓冲区)。正如Peter Rincker已经评论的那样,您可以通过

:setlocal isk+=-
(或使用
:设置
,例如在
~/.vimrc
中全局更改此设置。)请注意,这也会影响其他命令,如使用
w
e
等进行导航,甚至可能会影响语法高亮显示


另外,还有一些插件将
*
映射扩展到可视模式,因此您可以通过先选择任意文本片段来搜索它们。My提供了这一点,并提供了一个备选方案列表。

Vim是一个没有定制的非常糟糕的编辑器。将此添加到您的
.vimrc

function! s:VSetSearch()
let old = @"
norm! gvy
let @/ = '\V' . substitute(escape(@", '\'), '\n', '\\n', 'g')
let @" = old
endfunction

" * and # search for next/previous of selected text when used in visual mode
vnoremap * :<C-u>call <SID>VSetSearch()<CR>/<CR>
vnoremap # :<C-u>call <SID>VSetSearch()<CR>?<CR>
函数!s:VSetSearch()
让old=@“
诺姆!格维
让@/='\V'.替换(转义(@“,'\'),'\n','\\n',g')
让"老",
端功能
“*和#在视觉模式下使用时搜索选定文本的下一个/上一个
vnoremap*:调用VSetSearch()/
vnoremap#:调用VSetSearch()?

现在,您要做的是用v突出显示您要搜索的内容,然后点击*。使用此映射,它将执行与
*
相同的操作,但要执行您的视觉选择。

设置isk+=-
。然而,这可能会搞砸你的“单词”对那些角色来说很好,但我的“单词”还包括:它似乎不被接受为关键字。set isk=+-:给出错误“尾随字符”@user1734278
+=
=+