我在最新版本的 arch linux 5.5.6-arch1-1 上使用最新版本的 vim 8.2.148。
如果我想从光标复制到句子后面的一个字母,我可以这样做,例如在这个句子中,如果我的光标位于句子的开头并且我想拉到副本的 c 我会给出命令yuc
,它将复制“如果我愿意”。
另一个同样有效的示例是从字符串的开头拉到此字符串中“screenshots”的第二个实例的开头:
/home/user/linux_config/script_yad/screenshots/change_screenshots_directory.sh
但是,如果我的光标在这句话的开头,并且我想拉到并包括句子的第二个实例,我该怎么做?
我认为这样的命令在结构上可能看起来像,yt2"sentence"
尽管这个命令不起作用。
显然,使用字母 s 来拉动不会令人满意。
我希望在不使用可视模式的情况下实现这一点。
这是否需要一个插件,如果需要,是哪一个?
这可以在没有插件的情况下完成吗?如何?
您可以使用:
或者,更简单地说:
这将从光标位置拉到同一行上单词“screenshot”的第二个实例。
(注意
<CR>
这里的意思是按“回车”键,完成搜索。)如果您启用了增量搜索突出显示 (
set incsearch
),您将看到 Vim 突出显示第二个匹配项。您似乎将对角色的动作与对句子的动作混为一谈。动作(对于
t
“直到”,它是t
和不是u
)只需要一个字符。拉到同一位置的另一种方法是y6ts
,但这需要您计算s
句子中的 ',以查看“屏幕截图”第二个实例开头的那个是该s
行的第 6 个。(有插件可以帮助解决这个问题。)/
使用to 搜索(与t
、或动作)时有一些注意事项f
,因为该搜索可以在不同的行上找到匹配项,如果发生这种情况,您的 yank 操作现在将获取包含换行符的内容,这在粘贴时可能会令人惊讶或意外稍后再说。T
F
/
最后,当要使用的动作不明显或您需要更大的灵活性时,使用视觉模式是获得视觉反馈并能够调整您的操作选择的好方法。
例如,您可以从开始
vts
然后按;
重复该动作,直到您到达第二个“屏幕截图”(结果是 5 次。)比在没有突出显示的情况下计算它是第 6 次更容易!到达那里后,您只需按下y
即可将其拉出。或者
v/screen<CR>
,然后你意识到它是下一个,按n
,然后你注意到首字母s
被选中,按h
向右移动一次,然后y
拉它。(解决您的评论:上述视觉模式解决方案优于使用鼠标 IMO。
vts;;;;;y
是 9 次击键,但其中 5 次在同一个键上。另外,您的手没有离开键盘。而且您不必数字母在选择之前,您只能在视觉帮助下进行计数。相比之下,拖动鼠标更慢。)如果你想研究一个可能有助于这种运动的插件,vim-easymotion是一个很好的考虑。