vim - 如何... yank util 短语

Kes*_*Kes 3 vim

我在最新版本的 arch linux 5.5.6-arch1-1 上使用最新版本的 vim 8.2.148。

如果我想从光标复制到句子中的一个字母,我可以这样做,例如在这句话中,如果我的光标位于句子的开头并且我想猛拉直到复制的 c 我会给出命令yuc,它将复制“如果我愿意”。

另一个同样有效的示例是从字符串的开头猛拉到此字符串中“屏幕截图”的第二个实例的开头:

/home/user/linux_config/script_yad/screenshots/change_screenshots_directory.sh
Run Code Online (Sandbox Code Playgroud)

但是,如果我的光标在这句话的开头,并且我想拉到并包括第二个句子,我该怎么做?

我认为这样的命令在结构上可能看起来像yt2"sentence"虽然这个命令不起作用。

显然,使用字母 s 进行 yank 不会令人满意。

我希望在不使用视觉模式的情况下实现这一目标。

这是否需要插件,如果需要,是哪个?

这可以在没有插件的情况下完成吗?

fil*_*den 6

您可以使用:

y2/screenshot<CR>
Run Code Online (Sandbox Code Playgroud)

或者,更简单地说:

y2/screen<CR>
Run Code Online (Sandbox Code Playgroud)

这将从光标位置猛拉,直到同一行上出现单词“screenshot”的第二个实例。

(注意<CR>这里的意思是按“回车”键,完成搜索。)

如果您启用了增量搜索突出显示 ( set incsearch),您将看到 Vim 突出显示第二个匹配项。

您似乎将角色的动作与句子的动作混为一谈。该t议案(关于“直到”,这是tu)只需要单个字符。拉到同一位置的另一种方法是y6ts,但这需要您计算s句子中的's 以查看“屏幕截图”的第二个实例开头的那个是该s行的第 6 个。(有插件可以帮助解决这个问题。)

使用/to 搜索(相对于tfTF动作)时有一些注意事项,因为该/搜索可以在不同的行上找到匹配项,如果发生这种情况,您的 yank 操作现在将获取包含换行符的内容,这在粘贴时可能会令人惊讶或意外它稍后。

最后,当要使用的动作不明显或您需要更大的灵活性时,使用视觉模式是获得视觉反馈并能够调整操作选择的好方法。

例如,您可以开始,vts然后按;重复该动作,直到到达第二个“屏幕截图”(事实证明是 5 次)。比没有突出显示的第 6 个更容易!y到达那里后,您只需按下即可猛拉它。

或者v/screen<CR>,然后您意识到它是下一个,按n,然后您注意到首字母s被选中,按h向右移动一次,然后y猛拉它。

(解决您的评论:上面的视觉模式解决方案优于使用鼠标 IMO。vts;;;;;y是 9 次击键,但其中 5 次在同一个键上。另外,您的手没有离开键盘。而且您不必数字母在选择之前,您只能通过视觉帮助进行计数。相比之下,拖动鼠标更慢。)

如果您想研究可能有助于这种运动的插件,vim-easymotion是一个值得考虑的好插件

  • *您的复制操作现在将以逐行模式进行,因此您将复制“n”整行,而不是从光标到匹配的开头。*不,它仍然是按字符复制。除非你执行`y2V/screenshot&lt;cr&gt;`来强制它是逐行的。 (2认同)