更改VIM中的下N个字符
说我有以下行:
|add_test() (| == cursor position)
并想用'del'replace'add'。
del|_test()
我可以按三次X然后按i来插入并键入del。 我想要的是像3c或3r的东西来覆盖只有3个字符。 这两个都不做我想要的,3c用相同的字符覆盖3个字符,3r用几个其他的东西。
有没有一个简单的方法来做到这一点,而无需手动邢和插入文本?
3s
,“替代3个字符”与c3l
相同。 c3l
和c3l
应该是一样的,我不知道为什么你会看到相同的字符重复。 我也是使用t
的粉丝,例如ct_
作为另一个海报提到,那么我不必数字,只需键入“del”。
我也为了几天的“replace几个字符”而挣扎, 'r'对于单个字符来说很棒, R
对于匹配长度的string来说非常棒,但是我想要的是类似于OP的要求。 所以,我input:help x
并读了一会儿,结果是s
和S
的描述只是从x
开始的几页。
换句话说, :help
是你的朋友。 阅读和学习。
使用c {motion}命令:
- cf_ – 改成第一个'_'(含);
- ct_ – 改成第一个'_'(不含);
- 顺时针 – 改变第一个单词;
这个词是由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的内容。