3

我通常使用标记在 Vim 中剪切/粘贴。

要在第 4 行和第 12 行之间拉出文本,我执行以下操作:

  1. 将光标移动到第 4 行
  2. 键入mx以放置名为 x 的标记
  3. 将光标移动到第 12 行
  4. 键入y'x以拉出第 4 行和第 12 行之间的文本

完成此操作后,光标移回第 4 行。

有没有办法让光标停留在原处(不移回标记)?

如果有人有更好的方法来做同样的事情,那也太好了……

提前致谢!


更新:

我使用 FDinoff 的答案创建了一个让我成为快乐露营者的映射:

nnoremap YY y'x<C-O>

这会从光标拉到名为 x 的标记处,然后将光标返回到它所在的位置。

这已经为我节省了大量时间。再次感谢!

4

4 回答 4

9

您跳到第 4 行的原因是因为您正在使用带有向后运动的 yank。

                            *y* *yank*
["x]y{motion}       Yank {motion} text [into register x].  When no
            characters are to be yanked (e.g., "y0" in column 1),
            this is an error when 'cpoptions' includes the 'E'
            flag.

有问题的运动'x是跳转到标记 x。光标移动到被拉出的部分的开头,在本例中是第 4 行,因为您是从第 12 行拉出的。

然而你可以做的事情。

  1. 为 ex 命令行模式 yank使用范围。范围是.(当前行)到'x(标记 x)。如果范围向后,会问你是不是指另一个方向。这不会移动您的光标。:.,'xy

  2. 或者你可以使用<C-o>will 将你跳回你上次跳的地方。(评论中提到了。)

  3. 或者你可以使用']or `]。这些命令将跳转到最后一个被拉出的文本的最后一个字符。

于 2013-06-07T03:30:11.343 回答
3

跳回来:``<c-o>

如需更多帮助,请参阅:

:h ``
:h CTRL-O
于 2013-06-07T11:15:16.330 回答
1

怎么样y12G
这将从当前位置(第 4 行)拉到第 12 行。

于 2013-06-07T22:58:06.407 回答
0

如果我理解正确,您希望将光标保持在第 4 行。

光标在第 4 行V 12G y

甚至v,我认为你所缺少的只是视觉模式

这些动作也有帮助。

于 2022-01-07T19:51:31.250 回答