更改VIM中的下N个字符

说我有以下行:

|add_test() (| == cursor position) 

并想用'del'replace'add'。

 del|_test() 

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

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

3s ,“替代3个字符”与c3l相同。 c3lc3l应该是一样的,我不知道为什么你会看到相同的字符重复。 我也是使用t的粉丝,例如ct_作为另一个海报提到,那么我不必数字,只需键入“del”。

我也为了几天的“replace几个字符”而挣扎, 'r'对于单个字符来说很棒, R对于匹配长度的string来说非常棒,但是我想要的是类似于OP的要求。 所以,我input:help x并读了一会儿,结果是sS的描述只是从x开始的几页。

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

使用c {motion}命令:

  1. cf_ – 改成第一个'_'(含);
  2. ct_ – 改成第一个'_'(不含);
  3. 顺时针 – 改变第一个单词;

这个词是由iskeywordvariables决定的。 检查它:设置iskeyword? 并删除任何'_',如下所示:set iskeyword = @,48-57,192-255 。 顺便看看:帮助C:帮助议案,如果你想要更多。

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

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

或者,正如@Mike刚刚在评论中所说的那样,如果字符数恰好与您正在删除的字符数相符,则Control-R R可以很好地工作。

或者ct_从光标切换到下一个_字符。

如果作品长度相同,则可以使用R命令replace之前input的内容。

Interesting Posts