我用emacs有一段时间了,现在开始尝试使用Vim。在emacs中,若要选择搜索缓冲区中的多个单词,我会将光标移动到感兴趣的单词开头,然后按下“Ctrl+s”以启动搜索模式。接着我会按下Ctrl+w逐步选择要搜索的单词,最后再次按下Ctrl+s来搜索已选择的文本。
Vim中的等效方法是什么? 我了解到,在vim中使用*可以搜索光标下的单词。但是如果我想搜索不止一个词怎么办?比如光标后面的2个单词。
我用emacs有一段时间了,现在开始尝试使用Vim。在emacs中,若要选择搜索缓冲区中的多个单词,我会将光标移动到感兴趣的单词开头,然后按下“Ctrl+s”以启动搜索模式。接着我会按下Ctrl+w逐步选择要搜索的单词,最后再次按下Ctrl+s来搜索已选择的文本。
Vim中的等效方法是什么? 我了解到,在vim中使用*可以搜索光标下的单词。但是如果我想搜索不止一个词怎么办?比如光标后面的2个单词。
Vim没有直接相等的功能,但这里有一种方法可以达到相同的效果。这种方法比在Emacs中多按四次按键。
假设这是您的文档,光标位于[]
之间:
I have [s]ome text.
Will I find some text?
Yes. Some people can find text, and I can find some text.
C-s
C-w
C-w
C-s
。以下是在Vim中键入的内容:v
e
e
y
/
<C-R>
"
<CR>
。"
<C-R>
" – 将刚刚复制的未命名寄存器 "
的内容插入到命令行中。(<C-R>
表示Control+R)<CR>
– 执行搜索。(<CR>
是回车符,用Enter或Return键输入。)如果您不需要所选内容的可视反馈,并且已经知道需要选择多少个单词,则可以通过运动而非可视模式选择并插入,从而节省按键次数。在这种情况下,您将使用y 2 e
替换v
e
e
y
,它的意思是“从光标到第二个下一个单词的末尾复制所有内容”。
/
后面写入\V
(“非魔术字符”),它表示将模式中它后面的所有字符都按照字面意义进行处理(除了反斜杠)。我发现\V
非常有用,所以我在我的.vimrc
中放置自定义映射,以便默认情况下使用/
进行文字搜索。
对当前可视选择内容进行搜索是v_*
映射的一个很好的应用(意思是在可视模式下使用*
)。默认情况下,v_*
的行为与*
相同,但我从未觉得v_*
的行为有帮助。
xnoremap * y/\V<C-R>"<CR>
xnoremap # y?\V<C-R>"<CR>
v
e
e
*
即可。\<
和\>
。您还可以使函数检查并转义反斜杠和正斜杠,以便包含这些内容的搜索术语始终有效。*
。这是链接: https://github.com/thinca/vim-visualstar。^S^W^W^W^S
序列在Vim中将变成veee*
。