0

在 Vim 中,ctrl+a是增加一个整数,ctrl+x是减少一个整数。

例如,要修改以下代码以将 1、2、3 附加到数组中,我可以简单地ctrl+a在 line3 中放置一次,在 line4 中放置两次:

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

我的问题是,通过一个按键增加同一行中的所有整数是否是一种方便的方法?

4

3 回答 3

2

您首先键入以下两行:

array = []
rank1 = 1

然后将光标放在第 2 行。然后按顺序输入以下内容:

qa
yy
p
shift+v
:
s/\d\+/\=submatch(0)+1/g
q
5@a

这里的“5”可以更改为您想要的重复次数。

好的,这可行,但它变得更加复杂。

于 2013-01-10T07:28:15.833 回答
2

这个命令应该这样做:

:s/\d\+/\=submatch(0) + 1/g

编辑:“+”应该在 Vim 中转义

于 2013-01-10T08:18:49.920 回答
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

这仍然涉及分别在一行上做每个数字,但因为它一次做所有行,它只涉及总共做两次,所以应该仍然更快。

于 2021-02-27T12:45:59.610 回答