更改VIM中的下N个字符

时间:2011-08-29 23:34:37

标签: vim character

说我有以下一行:

|add_test()          (| == cursor position)

并希望用'del'替换'add'。

del|_test()

我可以按X三次然后按i插入并键入del。 我想要的是像3c或3r这样的东西来覆盖3个字符。 这两个都没有做我想要的,3c用相同的方法覆盖3个字符 性格,3r做了其他几件事。

有没有一种简单的方法可以在不手动兴趣和插入文本的情况下完成此操作?

7 个答案:

答案 0 :(得分:91)

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

我也在为“替换几个角色”而奋斗了几天; 'r'对单个字符很有用,R对于一串匹配的长度来说很棒,但是我想要像OP那样的东西。所以,我输入了:help x并阅读了一段时间,结果发现sS的描述距离x只有几页。

换句话说,:help是你的朋友。阅读和学习。

答案 1 :(得分:23)

使用 c {motion} 命令:

  1. cf _ - 更改为第一个'_'(包括);
  2. ct _ - 更改为第一个'_'(不包括);
  3. cw - 更改第一个字;
  4. 单词由 iskeyword 变量决定。请使用:设置iskeyword?进行检查并删除任何“_”,例如:set iskeyword = @,48-57,192-255 。 顺便提一下,如果你想要更多的话,请参阅:help c :帮助动作

答案 2 :(得分:7)

我认为3cl就是你想要的。它会向右更改3个字符。我输入ct_del<esc>,但那不是你问的那个

答案 3 :(得分:5)

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

或者,正如@Mike在评论中所说, Control-R R如果字符数恰好与您要删除的字符数相匹配,则效果很好。

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

答案 4 :(得分:3)

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

答案 5 :(得分:1)

给出的其他答案使用数字。当文本较长时,不必计数就更容易了。例如,我经常在markdown文件中成为标题,例如:

Some super duper long title that I don't want to have to count

yy pp

加倍

Some super duper long title that I don't want to have to count Some super duper long title that I don't want to have to count

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

Some super duper long title that I don't want to have to count ============================================================== (我在上面添加了一个空格,以消除堆栈溢出的降价格式)

答案 6 :(得分:0)

'c3h'将返还3个字符并进入插入模式, 然后输入您的“ del”