如何将当前行的整数增加1

时间:2014-09-04 17:29:27

标签: vim nand2tetris

我正在研究nand2tetris,最后我得到了很多文件,最终看起来像这样:

Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[1], load=load, out=out]1]);
...
Bit(in=in[15], load=load, out=out[15]);

所以我一直在第一行,然后使用15p,然后执行:s/0/i/g 15次(其中i是我需要的索引)。我注意到我可以用:s/\[\d\]/\[i\]/g替换它,但即使在这里,我每次运行命令时都会手动设置i的值。是否有可以运行的命令,以便i自动计算为\d+1,我可以为每一行重复命令,而无需手动指定值?

3 个答案:

答案 0 :(得分:7)

一种方法是使用Vim宏。

<强>概述

复制该行然后粘贴该行。增加两个数字。

qqyyp<c-a>l<c-a>q

请注意,这会将宏保存到寄存器q

通过@q执行宏,或通过14@q一起完成。

如需更多帮助,请参阅:

:h q
:h ctrl-a

答案 1 :(得分:2)

我会像Peter Rincker那样(即时宏)很棒但是这是另一个解决方案,只是为了它:

yy                         " yank current line
15p                        " paste 15 times
:,']s/0/\=line('.')-1/g    " substitute every 0 from cursor to last
                             pasted line with the current line number

答案 2 :(得分:0)

如果我理解你想要正确做什么,你应该能够在vim中使用increment包。获取第一行文字并使用15p粘贴15次:

Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);
Bit(in=in[0], load=load, out=out[0]);

您可以选择&#39; 0&#39;在第一行,使用Ctrl-V进入可视块模式。在可视块模式下突出显示底部,以便突出显示所有0。然后,您可以输入:Inc<CR>。这将增加数字,基本上用文字对行进行编号:

Bit(in=in[ 0], load=load, out=out[0]);
Bit(in=in[ 1], load=load, out=out[0]);
Bit(in=in[ 2], load=load, out=out[0]);
Bit(in=in[ 3], load=load, out=out[0]);
Bit(in=in[ 4], load=load, out=out[0]);
Bit(in=in[ 5], load=load, out=out[0]);
Bit(in=in[ 6], load=load, out=out[0]);
Bit(in=in[ 7], load=load, out=out[0]);
Bit(in=in[ 8], load=load, out=out[0]);
Bit(in=in[ 9], load=load, out=out[0]);
Bit(in=in[10], load=load, out=out[0]);
Bit(in=in[11], load=load, out=out[0]);
Bit(in=in[12], load=load, out=out[0]);
Bit(in=in[13], load=load, out=out[0]);
Bit(in=in[14], load=load, out=out[0]);
Bit(in=in[15], load=load, out=out[0]);