当前位置:  开发笔记 > 开发工具 > 正文

在vim中为源代码添加行号

如何解决《在vim中为源代码添加行号》经验,为你挑选了4个好方法。

如何在vim中的行范围中添加行号?不像":set nu" - 这只显示数字,但不会将它们添加到文件中.



1> Luc Hermitte..:

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

编辑:总结评论.

可以根据需要调整此命令.


假设您想在视觉选择(V+移动)的行前添加数字,并且您希望编号从42开始.

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

如果你想在行中的数字和旧文本之间添加一个字符串,只需将它(.在VimL中)连接到number-expression:

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

如果你需要这个作为文本排序,你可能想要填充结果,这可以使用printffor 0001, 0002...而不是1, 2...例如:

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

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


以防万一其他人需要知道,在数字后添加一个字符串`:%s/^ /\= line('.')."串" /'.在我的情况下,我需要一个逗号,因为我在csv文件中编号行,所以我做了`:%s/^ /\= line('.').''/`
当然.将"line('.')"更改为"(offset + line('.'))"".
@Jason`offset`可以是`1-line("'<")`.想知道为什么这个老问题出现在我的RSS中.
您可以尝试: - 文档(`:help:s` here),vim tips(http://vim.wikia.com),其他人编写的插件,vim_use(官方邮件列表)和像这样的论坛.

2> Jerub..:

cat -n在其输入中添加行号.您可以将当前文件传递给cat -n当前缓冲区,并将当前缓冲区替换为打印到stdout的内容.幸运的是,这个复杂的解决方案在vim中少于10个字符:

 :%!cat -n

或者,如果您只想要一个子选择,请直观地选择该区域,然后键入:

 :!cat -n

这将自动将视觉选择标记放入,并在您输入后显示如下:

 :'<,'>!cat -n

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



3> Martin v. Lö..:

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

:%!nl


cool nl -v允许你指定编号应该从哪里开始,所以如果你想让第一行是0行而不是1使用nl -v 0

4> VonC..:

在类Unix环境中,你可以使用cat或awk轻松生成一个行号,因为vim与shell有一个友好的接口,所以一切都在vim中工作,也在shell中工作.
来自Vim Tip28:

:%!cat -n

要么

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

但是,如果在MS-DOS中使用vim,win9x,win2000,则会丢失这些工具包.这是一个非常简单的方法来存档这个只有vim:

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

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

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

你也可以使用一个子:

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

您也可以只打印行而不将其添加到文件中:

"有时特别是编辑大型源文件以在纸上打印行号可能会很有用.
为此,您可以使用该选项:set printoptions=number:y激活并:set printoptions=number:n停用此功能.
如果应始终打印行号,请将行set printoptions=number:y放入的vimrc".

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有