有时我需要在 vim 中快速递增或生成一列数字。 Vim 8/ neovim 带有有用的数字技巧。
我将在这里分享其中的两个方法。
使用 put 和 range 快速生成数字
您可以通过以下方式快速生成升序数字
:put=range(1,5)
这会给你:
1
2
3
4
5
我们还可以控制增量。 如果我们想快速生成降序数,我们这样做:
:put=range(10,0,-1)
其他一些变化:
:put=range(0,10,2) // 从 0 到 10 递增 2
:put=range(5) // 从0开始,上升到5
这个技巧可能有助于在做笔记时生成列表。 在 vim 中,显示当前行,我们可以使用 line('.')。 这可以与 put/range 结合使用。 假设您当前位于第 40 行。要生成第 50 行的数字,您需要执行以下操作:
:put=range(line(','),50)
于是你将得到的结果是:
40 // prints at line 41.
41
42
43
44
45
46
47
48
49
50
要调整上面的行号,将其更改为 :put=range(line('.')+1,50) 以显示正确的行号。
快速增加数字列
假设我们有一列数字,比如下面 HTML 中的 0:
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
如果我们想增加所有的零(1、2、3、...),我们可以很快做到。 方法如下:
首先,将光标移动到顶部 0(我使用 [] 表示光标位置)。
<div class="test">[0]</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
<div class="test">0</div>
使用 VISUAL BLOCK 模式 (ctrl+v),向下移动 8 次 (ctrl+v >8j) 以直观地选择全部 0。
<div class="test">[0]</div>
<div class="test">[0]</div>
<div class="test">[0]</div>
<div class="test">[0]</div>
<div class="test">[0]</div>
<div class="test">[0]</div>
<div class="test">[0]</div>
<div class="test">[0]</div>
<div class="test">[0]</div>
现在键入 g ctrl+a。 瞧!
<div class="test">1</div>
<div class="test">2</div>
<div class="test">3</div>
<div class="test">4</div>
<div class="test">5</div>
<div class="test">6</div>
<div class="test">7</div>
<div class="test">8</div>
<div class="test">9</div>
等一下……刚刚发生了什么?
Vim 8 和 neovim 具有使用 <C-a> 自动递增数字(并使用 <C-x> 递减)的功能。 你可以通过 :help CTRL-A 来检查它。
我们还可以通过在前面插入一个数字来更改增量。 如果我们想要 10,20,30,... 而不是 1,2,3,...,请改为执行 10g<C-a>。
顺便说一句,使用 <C-a> 和 <C-x> 的超酷提示 - 您不仅可以递增数字,还可以递增八进制、十六进制、bin 和 alpha! 对我来说,我并没有真正使用前三个,但我确实经常使用 alpha。 Alpha 是 *alpha*betical 字符的花哨词。 如果我们确实设置 nformats=alpha,我们可以像处理数字一样递增字母表。