繁体   English   中英

Vim全字搜索 - 但速度更快

[英]Vim whole word search - but faster

我知道要在vim中搜索整个单词,您需要输入:

/\<word\><CR>

现在,我想要做的是将此行为映射到? (因为我从不向后搜索,如果需要,我可以向前搜索然后搜索NN)。 即我想键入:

?word<CR>

并具有与上面相同的结果(vim搜索整个单词)。 几周以来,我一直在使用vim命令和映射,但我不知道如何完成这个。 感谢您的任何帮助。

更新:(插入?我现在使用\\)。

我倾向于使用*# (由Brian Agnew建议),但是如果你想要一个涉及打字的方法

?word<CR>

你可以这样做:

function! SearchWord(word)
    let @/ = '\<' . a:word . '\>'
    normal n
endfunction
command! -nargs=1 SearchWord call SearchWord(<f-args>)
nmap ? :SearchWord 

请注意,在最后一行的SearchWord之后有一个空格。

说明:

映射会使? 打开命令提示符并键入SearchWord (包括空格)。 该命令使SearchWord myword相当于call SearchWord('myword') (即它将引号置于参数周围以使其成为字符串)。 该函数将搜索寄存器@/设置为等于由\\<\\>包围的单词,然后执行正常模式n以查找搜索寄存器内容的下一个实例。

当然,如果你这样做,你会失去增量搜索的好处,但无论如何它都是有用的。

您可以使用*# (前进和后退)搜索光标下的单词。 g*g#会做同样的事情,但最初会找到包含光标下的内容的单词。

显然(!)你需要找到第一个实例才能工作,但它对于连续搜索非常有效。

Al的解决方案非常好,但是只要输入\\<\\>模式,然后将光标移回两次就不会更简单了吗? 这对我有用:

nmap ? /\<\><Left><Left>

这样你仍然可以获得增量搜索( 有点 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM