Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 如何将当前行上的整数增加1_Vim_Nand2tetris - Fatal编程技术网

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

Vim 如何将当前行上的整数增加1,vim,nand2tetris,Vim,Nand2tetris,我正在研究NAND2TTERIS,最终我得到了很多文件,这些文件最终看起来像这样: 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,然后做了15次:s/0/I/g(其中I是我需要的索引)。我注意到,我可以用:s/\[\d\]/\[I\]/g替换它,但即使在这里,每次运行

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

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,然后做了15次
:s/0/I/g
(其中
I
是我需要的索引)。我注意到,我可以用
:s/\[\d\]/\[I\]/g
替换它,但即使在这里,每次运行命令时,我都会手动设置
I
的值。我是否可以运行一个命令,以便自动将
I
计算为
\d+1
,并且我可以对每一行重复该命令,而无需手动指定值?

一种方法是使用Vim宏

概述

复制该行,然后粘贴该行。两个数字都递增

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

一种方法是使用Vim宏

概述

复制该行,然后粘贴该行。两个数字都递增

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

如果我理解了您想要正确执行的操作,那么您应该能够在vim中使用该软件包。使用
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]);
您可以选择第一行上的“0”,然后使用Ctrl-V键进入可视块模式。在可视块模式下高亮显示底部,以便高亮显示所有0。然后您可以键入
:Inc
。这将增加数字,基本上是对文本中的行进行编号:

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]);

如果我理解了您想要正确执行的操作,那么您应该能够在vim中使用该软件包。使用
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]);
您可以选择第一行上的“0”,然后使用Ctrl-V键进入可视块模式。在可视块模式下高亮显示底部,以便高亮显示所有0。然后您可以键入
:Inc
。这将增加数字,基本上是对文本中的行进行编号:

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]);

我会像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

我会像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

我也想要答案。但恐怕我们不能只用正则表达式来实现。您可以使用替换,但需要使用
\=
。e、 g.
:s/\d\+/\=str2nr(子匹配(0))+1/
。有关详细信息,请参见
:h:s\=
。@PeterRincker我认为str2nr不是必需的。@FDinoff太棒了!你说得对。这也确实缩短了时间:
:s/\d\+/\=submatch(0)+1/
我也想要答案。但恐怕我们不能只用正则表达式来实现。您可以使用替换,但需要使用
\=
。e、 g.
:s/\d\+/\=str2nr(子匹配(0))+1/
。有关详细信息,请参见
:h:s\=
。@PeterRincker我认为str2nr不是必需的。@FDinoff太棒了!你说得对。这也确实缩短了时间:
:s/\d\+/\=submatch(0)+1/
+1有选择总是好的!应注意,如果文件中的代码块较低,则可能需要将
-1
调整为其他数字。或者你可以做更多的把戏,比如
:,']s/0/\=line('.')-line('[“”)/g
+1有选项总是好的!应该注意的是,如果文件中的代码块较低,你可能需要将
-1
调整为其他数字。或者你也可以做更多的把戏,比如
,']s/0/\=line('.')-line('.')-line('.')-line('[“”)/g
)。