【问题标题】:How to copy from current position to the end of line in vi如何在vi中从当前位置复制到行尾
【发布时间】:2011-12-07 12:41:45
【问题描述】:

我在 Windows 中使用 gvim。如何将文本从当前位置复制到 vi 中的行尾并将其粘贴到在 vi 中打开的另一个文件中。我用谷歌搜索但找不到任何解决方案。感谢您对此的任何帮助。谢谢。

【问题讨论】:

    标签: vim vi


    【解决方案1】:

    移动到行尾的正常模式命令是$

    您可以使用y$ 复制到行尾并使用p 粘贴。

    要在不同实例之间复制/粘贴,您可以通过选择*寄存器来使用系统剪贴板,因此命令变为"*y$用于复制,"*p用于粘贴。

    $移动到换行符

    $

    y$yank-to-linebreak

    y,$

    "*y$ 选择剪贴板注册 yank-to-linebreak

    ",*,y,$

    "*p选择剪贴板-注册粘贴

    ",*,p

    查看:h registers了解更多信息。

    【讨论】:

    • 谢谢。但我想将内容粘贴到在 vi 中打开的“另一个文件”。这仅适用于相同的文件。
    • 它适用于在同一实例中打开的任何文件。您可以通过选择*(或+)寄存器复制到系统剪贴板。
    • 为什么系统寄存器无法工作...我无法将file1 中的上下文复制到file2。我仍然需要使用鼠标。可能是什么原因?
    • 我通常使用D从当前位置剪切到末尾,p粘贴(恢复)原始数据,然后移动到其他地方粘贴被拉出的数据。仅仅是因为输入D 比输入y$ 容易得多。
    • @PhilipRego,它是y$,没有分号。
    【解决方案2】:

    如果不想在 yank 中包含换行符,可以使用 yg_。 (或者在你的情况下,"*yg_

    基本上,只要认识到$g_ 的移动方式之间存在差异。它在很多场合都对我有帮助。

    【讨论】:

    • 有没有办法交换g_$?我发现自己很少需要在动作中加入换行符。
    • 是的!额外的换行符让我发疯。这是需要的信息。
    • @JonathanDumaine 在您的$MYVIMRC 中添加nmap $ g_
    • @thedanotto 你这个美人
    【解决方案3】:

    将此行添加到您的 .vimrc

    " Make Y yank till end of line
    nnoremap Y y$
    

    更多信息请访问my vimrc

    【讨论】:

    • @KhalilRavanna 是的,但yy 不是已经涵盖了吗?
    • @KhalilRavanna 您刚刚说完Y 的默认功能会拉动整行,从头到尾(在您之前的评论中)。 Y 不会从光标拉到行尾,除非您按照此答案的建议重新映射它。
    • 哈哈,你说得对,我不假思索地检查了这条评论,并以某种方式内化了这个建议。将删除所有这些 cmets 以消除未来用户可能产生的混淆。我建议你也这样做。感谢您纠正我一时的愚蠢:)
    【解决方案4】:

    另一种解决方案:Dp 并将其粘贴到 p。事实上,这首先删除到行尾并将其重新粘贴到同一位置。使用p 将其粘贴到其他位置。

    【讨论】:

    • 为什么不 Du 并保持文件不变? (注意:这包括新行)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2011-09-17
    • 2012-01-12
    • 2017-12-04
    • 1970-01-01
    • 2014-12-06
    • 2015-11-05
    相关资源
    最近更新 更多