如何将行号添加到在Vim中打开的文件的行数范围?不是像在:set nu
中那样,-this只显示行号-而是实际上将行号放在文件中的每一行的前面?
发布于 2008-10-31 10:18:41
使用
:%s/^/\=line('.')/
编辑:对评论进行汇总。
此命令可以根据您的需要进行调整。
假设您想要在视觉选择(V
+ move)中的行前面添加数字,并且您希望编号从42开始。
:'<,'>s/^/\=(line('.')-line("'<")+42)/
如果您想在数字和该行中的旧文本之间添加一个字符串,只需将其连接(在VimL中使用.
)到数字表达式:
:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/
如果您需要将其作为文本进行排序,您可能希望对结果进行零填充,这可以使用0001, 0002
的printf
来完成...而不是1, 2
。例如:
:%s/^/\=printf('%04d', line('.'))/
无论如何,如果你想了解更多信息,只需打开vim help::h :s
并点击链接(|subreplace-special|
,...,|submatch()|
)
发布于 2008-10-31 07:10:03
cat -n
将行号添加到其输入。您可以将当前文件通过管道传输到cat -n
,并将当前缓冲区替换为打印到标准输出的内容。幸运的是,这个复杂的解决方案在vim中少于10个字符:
:%!cat -n
或者,如果只需要部分选择,则以可视方式选择该区域,然后键入以下内容:
:!cat -n
这将自动将视觉选择标记放入其中,并且在您键入后将如下所示:
:'<,'>!cat -n
为了擦除行号,我建议使用control-v
,这将允许您直观地选择一个矩形,然后您可以使用x
删除该矩形。
发布于 2008-10-31 07:13:00
在GNU系统上:使用外部nl
二进制文件:
:%!nl
https://stackoverflow.com/questions/252766
复制相似问题