将行号添加到vim中的源代码
我怎样才能添加行号在vim的行范围? 不像在“:设置Nu” – 这只是显示数字,但不会将它们添加到文件。
同
:%s/^/\=line('.')/
编辑:总结评论。
这个命令可以根据需要调整。
假设您想从视觉select( V
+移动)中添加数字,并且您希望编号从42开始。
:'<,'>s/^/\=(line('.')-line("'<")+42)/
如果你想添加一个string之间的数字和旧的文本,只是连接(与。in VimL)它的数字expression式:
:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/
如果你需要这样的文本sorting,你可能需要零填充的结果,这可以使用printf
for 0001, 0002
…而不是1, 2
…例如:
:%s/^/\=printf('%04d', line('.'))/
无论如何,如果你想了解更多的信息,只需打开vim help:: :h :s
并按照链接( |subreplace-special|
,…, |submatch()|
)
cat -n
将行号添加到其input。 您可以将当前文件传输到cat -n
然后用打印到stdout的内容replace当前的缓冲区。 幸运的是,这个复杂的解决scheme在vim中less于10个字符:
:%!cat -n
或者,如果您只需要一个子select,则直观地select该区域,然后键入以下内容:
:!cat -n
这会自动将视觉select标记放入,并且在键入后会看起来像这样:
:'<,'>!cat -n
为了擦除行号,我推荐使用control-v
,它可以让你在视觉上select一个矩形,然后用x
删除那个矩形。
在GNU系统上:使用外部nl
二进制:
:%!nl
在类Unix环境下,可以使用cat或awk轻松生成一个行号,因为vim与shell有一个友好的界面,所以一切工作在vim以及shell中。
从Vim Tip28 :
:%!cat -n
要么
:%!awk '{print NR,$0}'
但是,如果你在win98x,win2000的MS-DOS中使用vim,那么你会丢失这些工具包。 这里是一个非常简单的方法来存档这个唯一的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
来取消这个function。
如果要始终打印行号,请将行set printoptions=number:y
放入vimrc
。
首先,您可以删除现有的行号码,如果您需要:
:%s/^[0-9]*//
然后,你可以添加行号。 NR
是指从当前行号开始,所以你可以做一些math来获得你想要的编号。 以下命令给你四位数的行号:
:%!awk '{print 1000+NR*10,$0}'
“VisIncr”插件适用于一般插入增量数字的列(或字母,date,罗马数字等)。 您可以控制数字格式,填充等等。 因此,在每行前面插入“1”(通过:s
或:g
或可视块插入),以可视块模式突出显示该列,然后运行插件中的其中一个命令。