使用 Vim 在文本文件的每行开头插入单个连续数字

使用 Vim 在文本文件的每行开头插入单个连续数字

假设我有一个包含一些字符串的文本文件:

string_g
string_r
string_qqwer
string_p
string_f
string_3qw
string_e
string_qw

我需要在字符串之前插入递增或递减的数字:

001 string_g
002 string_r
003 string_qqwer
004 string_p
005 string_f
006 string_3qw
007 string_e
008 string_qw

只是为了避免混淆:

我不想显示行号。我知道那是如何运作的。我想要的是文本中每个字符串开头的实际数字。

有没有办法自动执行此操作vim

CTRL我可以用-标记每个字符串的开头,V然后键入:进入执行模式,这将允许我通过选择执行命令,:'<,'>但我被困在那里。

答案1

使用外部unix命令nl

:'<,'>!nl -w 3 -n rz -s' '

答案2

仅使用vim(不使用外部命令):

let i=1 | '<,'>g/^/ s//\=printf("%03d ",i) / | let i+=1

更改let i=1为您要开始的号码。

相关内容