按 shift + * 将在 vim 中突出显示相似的单词,但是,单词似乎是字符串的一部分,直到下一个特殊字符。因此,如果我的标记位于 s 上the-string-I-want-to find
,它将突出显示文件中的所有“字符串”实例。
有没有办法我可以做同样的事情,但不是搜索子集,而是搜索整个字符串the-string-I-want-to find
?
按 shift + * 将在 vim 中突出显示相似的单词,但是,单词似乎是字符串的一部分,直到下一个特殊字符。因此,如果我的标记位于 s 上the-string-I-want-to find
,它将突出显示文件中的所有“字符串”实例。
有没有办法我可以做同样的事情,但不是搜索子集,而是搜索整个字符串the-string-I-want-to find
?
该*
命令适用于单词;哪些字符属于该组由'iskeyword'
选项控制(每个缓冲区)。正如 Peter Rincker 已经评论的那样,您可以通过
:setlocal isk+=-
(或使用:set
例如 in~/.vimrc
来全局更改它。)请注意,这也会影响其他命令,例如使用 , 等的导航w
,e
甚至可能影响语法突出显示。
或者,有一些插件将*
映射扩展到可视模式,因此您可以通过先选择任意文本片段来搜索它们。我的SearchHighlighting 插件提供了这个并且有一个替代列表。
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>
现在您要做的是突出显示您要搜索的内容v,然后点击*。有了这个映射,它会做和你做的一样的事情*
,但是你的视觉选择。