Luc*_*tte 109
同
:%s/^/\=line('.')/
Run Code Online (Sandbox Code Playgroud)
编辑:总结评论.
可以根据需要调整此命令.
假设您想在视觉选择(V+移动)的行前添加数字,并且您希望编号从42开始.
:'<,'>s/^/\=(line('.')-line("'<")+42)/
Run Code Online (Sandbox Code Playgroud)
如果你想在行中的数字和旧文本之间添加一个字符串,只需将它(.在VimL中)连接到number-expression:
:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/
Run Code Online (Sandbox Code Playgroud)
如果你需要这个作为文本排序,你可能想要填充结果,这可以使用printffor 0001, 0002...而不是1, 2...例如:
:%s/^/\=printf('%04d', line('.'))/
Run Code Online (Sandbox Code Playgroud)
无论如何,如果你想了解更多信息,只需打开vim帮助::h :s并按照链接(|subreplace-special|,...,|submatch()|)
Jer*_*rub 33
cat -n在其输入中添加行号.您可以将当前文件传递给cat -n当前缓冲区,并将当前缓冲区替换为打印到stdout的内容.幸运的是,这个复杂的解决方案在vim中少于10个字符:
:%!cat -n
Run Code Online (Sandbox Code Playgroud)
或者,如果您只想要一个子选择,请直观地选择该区域,然后键入:
:!cat -n
Run Code Online (Sandbox Code Playgroud)
这将自动将视觉选择标记放入,并在您输入后显示如下:
:'<,'>!cat -n
Run Code Online (Sandbox Code Playgroud)
为了删除行号,我建议使用control-v,这将允许您在视觉上选择一个矩形,然后您可以删除该矩形x.
Mar*_*wis 22
在GNU系统上:使用外部nl二进制文件:
:%!nl
Run Code Online (Sandbox Code Playgroud)
在类Unix环境中,你可以使用cat或awk轻松生成一个行号,因为vim与shell有一个友好的接口,所以一切都在vim中工作,也在shell中工作.
来自Vim Tip28:
:%!cat -n
Run Code Online (Sandbox Code Playgroud)
要么
:%!awk '{print NR,$0}'
Run Code Online (Sandbox Code Playgroud)
但是,如果在MS-DOS中使用vim,win9x,win2000,则会丢失这些工具包.这是一个非常简单的方法来存档这个只有vim:
fu! LineIt()
exe ":s/^/".line(".")."/"
endf
Run Code Online (Sandbox Code Playgroud)
或者,用字母表组成的序列就像上面一样简单:
exe "s/^/".nr2char(line("."))."/"
Run Code Online (Sandbox Code Playgroud)
你也可以使用一个子:
:g/^/exe ":s/^/".line(".")."^I/"
Run Code Online (Sandbox Code Playgroud)
您也可以只打印行而不将其添加到文件中:
"有时特别是编辑大型源文件以在纸上打印行号可能会很有用.
为此,您可以使用该选项:set printoptions=number:y激活并:set printoptions=number:n停用此功能.
如果应始终打印行号,请将行set printoptions=number:y放入的vimrc".