用准备放入vi / vim的内容替换单词?

时间:2014-07-30 12:59:33

标签: vim vi

例如,我有:

rm -f $(NAME).elf $(name).d

其中第二个'name'是拼写错误,也应该是'NAME'。

所以在'N'上,我做了 y w ,然后转移到'n'。

我意识到如果我现在点击 c w 来改变它,我将处于插入模式 - 但我想啊,它只是一个额外的密钥( ESC ),然后我可以 p 更正版本。

但是在那种情况下, p 完全按照 u 所做的那样,将'name'放回去。我想因为“旧文本”也会在更改时加载到寄存器中,我没有意识到。


是否有可以应用于单词/字母/等的“替换为寄存器”命令?

4 个答案:

答案 0 :(得分:8)

yw NAME后移至name,您可以这样做:

viwp

or golf abit:vep

答案 1 :(得分:2)

我经常需要这个,我写了一个插件来简化并允许最大速度:ReplaceWithRegister

此插件提供了一个二合一gr命令,该命令用{motion} / text对象,整行或当前选择覆盖的文本替换寄存器的内容;旧文本被删除到黑洞寄存器中,即它已经消失了。它透明地处理许多极端情况,并允许通过标准.命令快速重复。如果您不喜欢它,它的页面会链接到替代品。

你的例子

NAME拉入默认寄存器,将光标移至n,只需使用gregr调用该命令,e是涵盖要替换的整个name的动作。

答案 2 :(得分:1)

另一种方式:

ciw<Ctrl-r>0

ce<Ctrl-r>0

这样就可以在不使用任何插件的情况下重复使用.,正如您在目前正在避免使用的评论中所提到的那样。

答案 3 :(得分:0)

您只需使用name更改gUiw的大小写。