更改 VIM 中的下一个 N 个字符

假设我有这样一句话:

|add_test()          (| == cursor position)

并且希望将“ add”替换为“ del”。

del|_test()

我可以按 X 三次,然后按 i 插入并键入 del。 我想要的是类似3c 或3r 的东西,只覆盖3个字符。 这两个都不做我想要的,3c 覆盖3个字符相同 字符,3r 做其他几件事情。

有没有一种简单的方法来做到这一点,而无需手动兴和插入文本?

34895 次浏览

c3 (‘ c’,‘3’,空格) ,然后键入要插入的字符。(或者可以使用右箭头或 l,而不是空格。)

或者,正如@Mike 在评论中所说,如果字符数恰好与您正在删除的字符数相匹配,那么 R就能很好地工作。

ct_从光标更改为下一个 _字符。

或者,就像@blood 在评论中建议的那样,3s

我认为 3cl是你想要的。它改变3个字符的权利。我想打 ct_del<esc>但你问的不是这个

3s,“替换3个字符”与 c3l相同。3clc3l应该是相同的,我不知道为什么你会看到相同的字符重复。我也喜欢使用 t,例如 ct_作为另一个海报提到,那么我就不需要计算字符,只需要输入“ del”。

我也为“替换几个字符”纠结了几天; ‘ r’对于单个字符来说很棒,R对于匹配长度的字符串来说很棒,但是我想要一些类似 OP 要求的东西。因此,我输入了 :help x并阅读了一会儿,结果发现 sS的描述只比 x低了几页。

换句话说,:help是你的朋友。

使用 C { motion }命令:

  1. Cf _ -更改为第一个“ _”(包括) ;
  2. Ct _ -改为第一个“ _”(不包括) ;
  3. Cw -更改第一个单词;

这个单词是由 是关键词变量决定的。用 : set is 关键字?检查它,然后删除任何“ _”,就像 关键字 =@,48-57,192-255那样。 顺便说一下,看到 翻译: help c翻译: help motion如果你想要更多。

如果作品具有相同的长度,您可以使用 R命令,该命令用您输入的内容替换您以前的内容。

给出的其他答案使用数字。文字越长,就越容易不用计数。例如,我经常在标记文件中标题如下:

一些我不想数的超级长的标题

yy pp把线翻倍

一些我不想数的超级长的标题 一些我不想数的超级长的标题

V突出显示整行 然后使用 r{char}或者在这种情况下使用 r=来获得:

一些我不想数的超级长的标题 ============================================================== (我在上面添加了一个空格来跳过堆栈溢出的标记格式)