Vim - 从当前光标位置复制到行首

18
在VIM中,我知道我们可以使用y$一直复制到行末,但是如果我的文本是abcdefg,我的光标在'g',然后我输入y^,则该行将被复制而不包括g。我的想法是复制整行而没有换行符,任何类似的操作都可以做到。
5个回答

12

0y$$ - 复制这一行内容并将光标移回到行尾


2
更一般地说,“0y$`]”将把光标移回到它原来的位置。 - Prince Goulash
我打赌这是最少按键的唯一解决方案? - drhanlau

7
将光标所在位置的字符包含在内,然后进行可视化选择并删除:
v0y

可能还需要 set sel=inclusive 吗? - Matthew Strawbridge
@cherhan,它默认情况下会完全按照您的要求执行。除非您明确更改了“selection”选项的值为其默认值以外的其他值,这似乎是愚蠢的。 - romainl

3
如果所有字符确实在一起并符合"vim句子"的规范,您可以使用视觉选择来选择"句子"对象。在这种情况下,"句子"将匹配abcdefg,即使它不是从行首开始,并且不包括行末标记。
visy

如果你想包含尾随空格,你应该使用a而不是i("inside"的助记符):

vasy

这种方法的唯一问题(可能不是您想要的)是它不会包括前导空格。因此,如果您有以下内容:
    abcdefg

选择不包括前导的空白块,只包括abcdefg

3
原来一直往行尾删除是一个你经常会用到的操作。因此,以下映射非常受欢迎。
noremap Y y$

这个映射非常流行,甚至在:h Y下列出!

如果你使用这个映射,你的问题的答案将是0Y


哦,是的,有C和D,我不明白为什么Y不是默认绑定。 - Haruki

1
0yg_

还有另一种选择。

但是可视化模式更好:

v0y
v^y

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接