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
在vi/vim中,为特定的数字列添加一个整数_Vim_Vi - Fatal编程技术网

在vi/vim中,为特定的数字列添加一个整数

在vi/vim中,为特定的数字列添加一个整数,vim,vi,Vim,Vi,例如,我有一个文件,如下所示: HEAD 100 ABC 12 24 12.5 HEAD 101 ABC 10 20 11.9 HEAD 102 ABC 13 18 15.4 HEAD 103 ABC 14 21 17.6 HEAD 104 ABC 16 23 13.4 如何在每行的第2列中添加一个数字(如5)?会的 HEAD 105 ABC 12 24 12.5 HEAD 106 ABC 10 20 11.9 HEAD 107 ABC 13 18 15.4 HEAD 108 ABC 14 2

例如,我有一个文件,如下所示:

HEAD 100 ABC 12 24 12.5
HEAD 101 ABC 10 20 11.9
HEAD 102 ABC 13 18 15.4
HEAD 103 ABC 14 21 17.6
HEAD 104 ABC 16 23 13.4
如何在每行的第2列中添加一个数字(如5)?会的

HEAD 105 ABC 12 24 12.5
HEAD 106 ABC 10 20 11.9
HEAD 107 ABC 13 18 15.4
HEAD 108 ABC 14 21 17.6
HEAD 109 ABC 16 23 13.4
我试着在vi命令模式下做,我试着

:%s/\d\+/\=submatch(0)+1/g
但它会将行中的每个数字相加


谢谢

您非常接近,但不要使用全局匹配,而是使用:

:%s/\d\+/\=submatch(0)+5/
这将仅替换第一个匹配项(在本例中为所需的第二列)

输出:

HEAD 105 ABC 12 24 12.5
HEAD 106 ABC 10 20 11.9
HEAD 107 ABC 13 18 15.4
HEAD 108 ABC 14 21 17.6
HEAD 109 ABC 16 23 13.4

或者,在块视觉模式(
Ctrl-V
)中,选择要递增的数字:

HEAD 100 ABC 12 24 12.5 HEAD 101 ABC 10 20 11.9 HEAD 102 ABC 13 18 15.4 HEAD 103 ABC 14 21 17.6 HEAD 104 ABC 16 23 13.4 即在第7列的数字上加5。您可以使用带有
50 Ctrl-A
的可视化方法。或者使用特定的列匹配(
\%c
):


%s/\%>6c\%非常感谢!另外,如何匹配特定的数字列?这将使它更方便,例如,如果我想编辑上面文件的第4列,而不是第一个数字列。然后使用块视觉模式。是的,好主意!真管用!!我认为这对于一些简单的编辑来说已经足够了。谢谢!这实际上是一种更简单的方法(对于小行数?),如果您的输入文件包含多行,那么在键入
Ctrl-V
后,您可以使用
nj
.emmm向下移动n多行,看起来在我的vim版本(7.4)中,Ctrl-V在视觉块模式下不起作用。似乎新添加了可视块中的ctrl-v。如果
:echo具有('visualextra')
返回1,则当前版本的Vim支持块可视模式。否,我在linux中。Ctrl-a在常规模式下工作,但在视觉模式下不工作。
%norm 5^a
可以工作,而且非常短`^A之后是
HEAD 150 ABC 12 24 12.5                                           
HEAD 151 ABC 10 20 11.9                                           
HEAD 152 ABC 13 18 15.4                                           
HEAD 153 ABC 14 21 17.6                                           
HEAD 154 ABC 16 23 13.4 
%s/\%>6c\%<8c\d/\=+5/