foofoo.xy.barbar
我想将
xy
更改为gh
。我尝试做2r-> gh,但是显然不起作用,因为它用xy
取代了gg
,然后将光标向左移动了一个位置。而不进入插入模式,或者不使用很多按键(例如:s / xy / gh /)?#1 楼
如果新文本的长度与旧文本的长度相同,则可以选择Vim的替换模式。在正常模式下,R(大写的“ r”)使您进入替换模式。这类似于某些其他文本编辑器中的“覆盖”:代替在插入模式下插入新字符,键入将替换光标下的字符,然后前进到下一个光标。 (可以像小写的r
一样思考,但一次只能输入一个字符。)请使用:help replace-mode
查找替换模式的文档。 .
和x
,通过按R进入替换模式。现在,当您键入g时,它将替换“ x”并移至下一个字符,因此您可以键入h来替换“ y”。现在,您的编辑已完成,因此请转义以返回正常模式。(当替换文本的长度与旧文本的长度相同时,此方法有效,但是如果替换文本的长度较长或较短,则满足您的所有需求:它将用移动的文本替换1,然后键入您要键入的文本。有很多方法可以使用
c
,例如:将光标放在c
和.
之间,ct。x
Escape表示要更改文本(直到“ ABC
”为止,并带有“ ABC”。)1将移动中的文本拖入未命名/
.
寄存器,然后切换到插入模式,这样您就可以键入一些内容来替换它,然后转回普通模式。评论
这适用于这种情况。如果您想将3个字符替换为2个字符怎么办?
–贡萨洛·里贝罗(GonçaloRibeiro)
2015年2月12日,1:19
好问题;修改为包括一种处理不同长度文本的方法。
– alxndr
2015年2月12日在1:22
是的,我知道。但是那样进入了插入模式,我很想知道在这种情况下是否有不使用插入模式的方法。并不是说我认为它很有用(但是我可能是错的)。
–贡萨洛·里贝罗(GonçaloRibeiro)
2015年2月12日在1:26
带有数字n的前缀,最多替换目标字符的第n次出现。这对于替换格式为w_x_y_z和a-b-c-d的部分标签很有用。也可以使用f代替t来删除限制字符。
–pkfm
19年12月6日在1:23
#2 楼
您可以通过几种方法来执行此操作,但我能想到的最简单的方法是:; TL; DR
/>
fxcw<REPLACEMENT TEXT>
跳至x(请参阅fx
)help *f*
说要更改单词(有关更多信息,请参阅cw
,:h *c*
和:help *w*
) ,删除“ xy”文本并进入插入模式,让您将所需的内容放在此处。如果光标已经在“ y”字符(或文本中要替换的任何字符)上,则可以使用
:help cw
。这告诉vim更改您所在的单词,即使您不在开头。有关cw
和一般文本对象的更多信息,请参见.
。评论
这不会让他处于插入模式吗?
– elyashiv
2015年2月12日于12:00
啊-没听懂他那部分问题。在那种情况下,是的-R是最合适的解决方案。
–科迪民意测验
2015年2月12日15:53
#3 楼
替换方式:Rgh<Esc>
如果替换的长度与原始长度相同,则是最明显的解决方案,但您也可以这样做:
或:
2sgh<Esc>
评论
R进入替换模式。 :help替换模式以获取更多信息。我尝试过vt.rgh。但是除了光标位置以外,结果与您相同。
您为什么不想进入插入模式?像cwgh
@ durron597我不确定是否最小化击键是否是一个好标签,因此通常不是问题的实质。 (我拒绝了您建议的修改)...也许您应该在meta上进行讨论?