在Vim中,ctrl+a
是增加整数,ctrl+x
是减少整数。
例如,要修改以下代码以将1,2,3附加到数组中,我可以简单地将ctrl+a
放入第3行并在第4行放置两次:
array = [] # line1
array.append(1) # line2
array.append(1) # line3
array.append(1) # line4
然后它会变成:
array = [] # line1
array.append(1) # line2
array.append(2) # line3
array.append(3) # line4
但是当我想在一行中增加多个整数时,这并不方便。例如,我想改变:
rank1 = 1
rank1 = 1
rank1 = 1
为:
rank1 = 1
rank2 = 2
rank3 = 3
我的问题是,通过一次击键增加同一行中的所有整数是一种方便的方法吗?
答案 0 :(得分:2)
首先输入以下两行:
array = []
rank1 = 1
然后将光标放在第2行。然后按顺序键入以下内容:
qa
yy
p
shift+v
:
s/\d\+/\=submatch(0)+1/g
q
5@a
这里'5'可以改变你想要的重复次数。
好的,这很有效,但它变得更复杂。
答案 1 :(得分:2)
此命令应该这样做:
:s/\d\+/\=submatch(0) + 1/g
编辑:“+”应该在Vim中转义
答案 2 :(得分:1)
在 Vim 版本 8(第一次问这个问题时不存在)中,您可以使用 g Ctrl+A
每次将一列数字增加 1。所以从上面的例子开始:
rank1 = 1
rank1 = 1
rank1 = 1
rank1 = 1
rank1 = 1
移至第二行并按 V
以在视觉上突出显示它。移至最后一行,然后键入 g Ctrl+A
。这将第一个 1(在第二行)增加到 2,将后面的行增加到 3,依此类推,给你:
rank1 = 1
rank2 = 1
rank3 = 1
rank4 = 1
rank5 = 1
然后要在行尾增加 1 列,您需要选择一个不包含该行前面数字的块。例如,在光标仍位于第二行的情况下,键入 $ Ctrl+V 3j
。然后再次执行 g Ctrl+A
,你会得到:
rank1 = 1
rank2 = 2
rank3 = 3
rank4 = 4
rank5 = 5
这仍然涉及单独处理一行上的每个数字,但因为它一次处理所有行,所以总共只涉及执行两次,所以应该仍然更快。