如何在Vim中增加/减少同一行中的所有整数?
在Vim中,如何在Vim中增加/减少同一行中的所有整数?,vim,Vim,在Vim中,ctrl+a是增加一个整数,ctrl+x是减少一个整数 例如,要修改以下代码以将1、2、3附加到数组中,我只需在第3行中放置一次ctrl+a,在第4行中放置两次: array = [] # line1 array.append(1) # line2 array.append(1) # line3 array.append(1) # line4 然后它将变成: array = [] # line1 array.append(1) # line2 array.app
ctrl+a
是增加一个整数,ctrl+x
是减少一个整数
例如,要修改以下代码以将1、2、3附加到数组中,我只需在第3行中放置一次ctrl+a
,在第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
致:
我的问题是,通过一次按键增加同一行中的所有整数是否方便?首先键入以下两行:
array = []
rank1 = 1
然后将光标放在第2行。然后按顺序键入以下内容:
qa
yy
p
shift+v
:
s/\d\+/\=submatch(0)+1/g
q
5@a
这里的“5”可以改变为你想要的重复次数
好的,这是可行的,但会变得更复杂。首先键入以下两行:
array = []
rank1 = 1
然后将光标放在第2行。然后按顺序键入以下内容:
qa
yy
p
shift+v
:
s/\d\+/\=submatch(0)+1/g
q
5@a
这里的“5”可以改变为你想要的重复次数
好的,这是可行的,但会变得更复杂。这个命令应该可以:
:s/\d\+/\=submatch(0) + 1/g
编辑:应在Vim中转义“+”此命令应执行以下操作:
:s/\d\+/\=submatch(0) + 1/g
编辑:在Vim版本8中,Vim中的“+”应该转义(当第一次提出此问题时,它不存在)。您可以使用g Ctrl+A
将一列数字每次增加1。从上面的例子开始:
rank1 = 1
rank1 = 1
rank1 = 1
rank1 = 1
rank1 = 1
移动到第二行,然后按V
以视觉方式突出显示该行。移动到最后一行,然后键入gctrl+A
。这将第一个1(第二行)增加到2,第二行后面的1增加到3,依此类推,得到:
rank1 = 1
rank2 = 1
rank3 = 1
rank4 = 1
rank5 = 1
然后,要增加行末尾的1列,需要选择一个不包括行前面数字的块。例如,当光标仍在第二行时,键入$Ctrl+v3j
。然后再次执行gctrl+A
,您将得到:
rank1 = 1
rank2 = 2
rank3 = 3
rank4 = 4
rank5 = 5
这仍然需要分别在一行上做每一个数字,但因为它一次做所有行,所以总共只需要做两次,所以应该更快。在Vim版本8中(第一次问这个问题时不存在),您可以使用g Ctrl+a
将一列数字每次增加1。从上面的例子开始:
rank1 = 1
rank1 = 1
rank1 = 1
rank1 = 1
rank1 = 1
移动到第二行,然后按V
以视觉方式突出显示该行。移动到最后一行,然后键入gctrl+A
。这将第一个1(第二行)增加到2,第二行后面的1增加到3,依此类推,得到:
rank1 = 1
rank2 = 1
rank3 = 1
rank4 = 1
rank5 = 1
然后,要增加行末尾的1列,需要选择一个不包括行前面数字的块。例如,当光标仍在第二行时,键入$Ctrl+v3j
。然后再次执行gctrl+A
,您将得到:
rank1 = 1
rank2 = 2
rank3 = 3
rank4 = 4
rank5 = 5
这仍然需要在一行中分别计算每个数字,但因为它一次计算所有行,所以总共只需要计算两次,所以速度应该更快。这只会增加行中的第一个数字。问题是如何增加行中的所有数字。恐怕这不是我要问的。但还是要感谢你教我这个录音技巧。这只会增加第一行的数字。问题是如何增加行中的所有数字。恐怕这不是我要问的。但还是要感谢你教我这个录音技巧。