You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在vi编辑器中为编辑文件添加行号并保存带行号的内容?

在Vi中保存带行号的文件

嘿,我来帮你搞定这个问题!当你用:number(或者更常用的:set nu)在Vi里显示行号时,这些行号只是编辑器的临时显示效果,并不会被写入到文件里。如果想让保存后的文件本身就包含行号,这里有几个实用的方法:

方法1:用Vi内置命令直接给文件添加行号

进入Vi的命令模式,输入以下命令并回车:

:%s/^/\=line(".") . " "/
  • 解释一下:%表示对所有行生效,s/^/.../是替换每行开头的内容;\=line(".")会自动获取当前行的行号,. " "是在行号后面加个空格(你也可以换成".\t"用制表符分隔,看个人习惯)。
  • 执行完后,你会看到编辑区里每行前面都加上了行号,直接输入:w保存,文件就会带着行号被存储啦。

方法2:用终端外部命令生成带行号的文件副本

如果你不想修改原文件,只是需要一个带行号的副本,可以退出Vi后,在终端里用nl或者cat -n命令:

  • 用nl命令(默认会自动给非空行加行号):
nl your_filename.txt > new_file_with_numbers.txt
  • 用cat -n命令(会给所有行包括空行加行号):
cat -n your_filename.txt > new_file.txt

这样生成的新文件就自带行号了,原文件保持不变。

方法3:用Vi的打印导出功能生成带行号的文件

如果只是临时需要带行号的版本,也可以用Vi的打印输出功能导出:
在Vi命令模式下依次输入:

:set printoptions=number
:hardcopy > output_with_numbers.txt

这个操作会把当前编辑的内容(带行号)导出到指定的output_with_numbers.txt文件中,原文件不会被修改。

小提醒

方法1会直接修改原文件的内容,如果之后不需要行号了,可以用这个命令删除:

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

它会移除每行开头的数字和后面的空格。

内容的提问来源于stack exchange,提问作者Ramchandra Shahi Thakuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:43:57