vim:我可以*只* y 执行复制吗?

Joh*_*man 11 vim

我正在学习喜欢 vim,但我还没有完全接受的一件事是复制和粘贴情况。在麻瓜文本编辑器中,我会Ctrl-C复制一段文本,然后编辑/删除,然后将文本粘贴到其他地方。但是在 vim 中我不能这样做,因为在我用 复制文本后y,修改文本经常涉及d并且x会抹去我的原始文本。

有没有办法制作dx不是复制文本?否则,我应该如何使用这些 vim 功能?

Gil*_*il' 16

前 9 次 yanks 保存在称为1through 的寄存器中9。您可以使用 来回忆倒数第二次猛拉"1p,使用"2p等等。该命令:reg显示可用于粘贴的寄存器。

如果您希望猛拉持续更长时间,请使用字母寄存器

对于更晦涩的 yank 相关命令,请从:help "手册开始阅读。

  • 此外,寄存器 0 包含最后一个被拉取的文本(与删除相反)。所以回到原来的问题,你可以用`y`猛拉,继续编辑包括`d`和`x`,然后用`"0p`粘贴被猛拉的文本 (2认同)

War*_*ung 9

您正在谈论的命令使用所谓的“未命名”寄存器。它仅适用于非常短期的使用。“我要把它从这里拽下来放到那里”之类的。

当你想在做其他事情的同时保持某件事超过几秒钟时,你应该使用命名寄存器。

例如," a y y将光标所在的行拖入a寄存器。没有什么会意外地破坏它,除非您键入另一个涉及a寄存器的命令。几分钟、几小时、甚至几天后,您可以键入" a p以从a光标所在的寄存器下方的寄存器中删除该行的复制副本。

(为了让它工作得很好,你应该set viminfo='50,\"1000在你的~/.vimrc文件中有一行,告诉它记住诸如跨 Vim 会话注册内容之类的事情。然后你可以在 yank 和 put 之间休假!)

有 26 个命名寄存器 (az)。如果您将它们指定为大写而不是如上所示,您将附加到当前寄存器内容而不是替换它们。因此,您可以构建一些非常复杂的东西,例如,一次注册h一个,然后使用" h p.

请注意,寄存器名称是可选的。这意味着可能有许多您已经知道并在使用命名寄存器的地方使用的命令。:help registers在 Vim 中说以获得一些可能性的想法。

另外,买一个 Vi 马克杯