Vim全字搜索 - 但速度更快

Nic*_*ssi 4 mapping vim search command

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

/\<word\><CR>
Run Code Online (Sandbox Code Playgroud)

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

?word<CR>
Run Code Online (Sandbox Code Playgroud)

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

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

DrA*_*rAl 11

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

?word<CR>
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

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

请注意SearchWord,最后一行后面有一个空格.

说明:

映射将?打开命令提示符并键入SearchWord(包括空格).该命令使得SearchWord myword相当于call SearchWord('myword')(即它将引号置于参数周围以使其成为字符串).该功能将搜索注册@/等于你的话包围\<\>,然后再执行正常模式n找到的搜索寄存器的内容的一个实例.

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


Bri*_*new 8

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

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