我在最新版本的 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 来拉取不会令人满意。
我希望在不使用视觉模式的情况下实现这一目标。
这是否需要插件,如果需要,是哪个?
这可以在没有插件的情况下完成吗?如何实现?
答案1
您可以使用:
y2/screenshot<CR>
或者,更简单地说:
y2/screen<CR>
这将从光标位置拉出,直到同一行上出现第二个单词“screenshot”。
(注意,<CR>
这里的意思是按“返回”键,完成搜索。)
如果您启用了增量搜索突出显示 ( set incsearch
),您将看到 Vim 突出显示第二个匹配项。
你似乎把这个动作混为一谈了特点将动议定为一句话。动作t
(对于“until”,it'st
和 not u
)仅需要一个字符。拉到同一位置的另一种方法是y6ts
,但这需要您计算s
句子中的 ,以查看“screenshot”第二个实例开头的那个是s
该行的第六个。 (有一些插件可以帮助解决这个问题。)
/
使用搜索(相对于t
、f
或动作)时有一些注意事项,因为搜索可以在不同的行上找到匹配项,如果发生这种情况,您的复制操作现在将获取包含换行符T
的内容,这在粘贴时可能会令人惊讶或意外稍后再说。F
/
最后,当要使用的动作不明显或需要更多灵活性时,使用视觉模式是获得视觉反馈并能够调整操作选择的好方法。
例如,您可以从 开始vts
,然后按;
重复该动作,直到到达第二个“屏幕截图”(结果是 5 次。)比数第六个(没有突出显示)更容易!到达那里后,您只需按下即可y
将其拉出。
或者v/screen<CR>
,然后您意识到这是下一个,按n
,然后您注意到第一个字母s
已被选中,按h
向右移动一次,然后y
将其拉出。
(针对您的评论:在我看来,上述视觉模式解决方案优于使用鼠标。vts;;;;;y
需要 9 次击键,但其中 5 次在同一键上。此外,您的手还没有离开键盘。而且您不必数字母相比之下,在选择之前,您只能通过视觉帮助进行计数。)
如果您想研究一个可能有助于这种运动的插件,vim-easymotion是一个值得考虑的好问题。