如何在Vim中添加行号?

7lrncoxx  于 2022-11-11  发布在  其他
关注(0)|答案(8)|浏览(208)

如何在Vim中打开的文件中为一系列行添加行号?与:set nu不同I-它只是 * 显示 * 行号--但实际上是将它们添加到文件中的每一行之前?

nsc4cvqm

nsc4cvqm1#

:%s/^/\=line('.')/

编辑:总结评论。
此命令可以根据需要进行任意调整。
假设您要在可视选择(V + move)中的行前面添加数字,并且希望编号从42开始。

:'<,'>s/^/\=(line('.')-line("'<")+42)/

如果你想在数字和该行的旧文本之间添加一个字符串,只需将其连接到数字表达式中(在VimL中使用.):

:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/

如果您需要将其作为文本进行排序,则可能需要对结果进行零填充,这可以通过使用printf for 0001, 0002 ...而不是1, 2 ...来完成,例如:

:%s/^/\=printf('%04d', line('.'))/

无论如何,如果你想了解更多信息,只要打开vim帮助::h :s,并按照链接(|subreplace-special|、...、|submatch()|

wlsrxk51

wlsrxk512#

cat -n将行号添加到其输入中。您可以将当前文件通过管道传输到cat -n,并将当前缓冲区替换为输出到stdout的内容。幸运的是,这个复杂的解决方案在vim中不到10个字符:

:%!cat -n

或者,如果只需要部分选取,请以视觉方式选取区域,然后输入:

:!cat -n

这将自动放置可视选择标记,在您键入后,它将如下所示:

:'<,'>!cat -n

为了擦除行号,我建议使用control-v,这将允许您可视地选择一个矩形,然后您可以使用x删除该矩形。

mu0hgdu0

mu0hgdu03#

在GNU系统上:使用外部nl二进制:

:%!nl
t2a7ltrp

t2a7ltrp4#

在类Unix环境下,可以使用cat或awk轻松地生成行号,因为vim与shell之间有一个友好的接口,所以一切在vim中都和在shell中一样好用。
Vim Tip28开始:

:%!cat -n

:%!awk '{print NR,$0}'

但是,如果你使用vim在MS-DOS,的win 9 x,win2000,你失去了这些工具包.这里是一个非常简单的方法来存档这只由vim:

fu! LineIt()
  exe ":s/^/".line(".")."/"
endf

或者,用字母表组成的序列就像上面一样简单:

exe "s/^/".nr2char(line("."))."/"

您也可以使用subst:

:g/^/exe ":s/^/".line(".")."^I/"

您也可以只打印这些行,而不将它们添加到文件中:
“有时它可能是有用的,特别是在编辑大型源文件时,将行号打印在纸上。
为此,您可以使用选项:set printoptions=number:y来激活此功能,使用:set printoptions=number:n来停用此功能。
如果始终打印行号,请将set printoptions=number:y行置于vimrc”中。

eulz3vhy

eulz3vhy5#

首先,如果需要执行以下操作,可以删除现有的行号:

:%s/^[0-9]*//

然后,您可以添加行号。NR表示当前行号,从1开始,因此您可以对它进行一些数学运算以获得所需的编号。以下命令为您提供四位数的行号:

:%!awk '{print 1000+NR*10,$0}'
2g32fytz

2g32fytz6#

"VisIncr"插件非常适合插入递增的数字列(或者字母、日期、罗马数字等)。你可以控制数字格式、填充等等。所以在每一行前面插入一个“1”(通过:s:g或visual-block insert),在visual-block模式下突出显示该列,然后运行插件中的一个命令。

b91juud3

b91juud37#

如果有人想在使用this excellent answer插入行号后添加一个制表符(或一些空格),这里有一个方法。进入转义模式后,执行以下操作:

:%s/^/\=line('.').'    '/

^表示一行的开头,%s是替换指令,所以我们说在每一行的开头加上一个行号,然后加上4个空格,然后把行的内容放在替换之前,对文件中的所有行都这样做。
这将自动替换它。或者,如果您希望命令要求您确认,请执行以下操作:

:%s/^/\=line('.').'    '/igc

附言:vim的力量:)

qyyhg6bp

qyyhg6bp8#

最好的回答是在duplicate question中完成的。
总而言之:
CTRL-V,然后GI0您可以插入一列零。
然后选择整列并递增:
CTRL-Vg CTRL-A
另请参阅:https://vim.fandom.com/wiki/Making_a_list_of_numbers#Incrementing_selected_numbers

相关问题