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