上一篇
在linux中如何关闭行号
- Linux
- 2025-07-26
- 6
Linux中 关闭 行号可用以下方法: vim编辑器执行 :set nonumber; less命令加参数 -N; cat命令不带参数直接查看文件
命令行工具中的处理方式
cat 命令
- 默认行为:直接使用 cat filename 不会显示行号(与 cat -n 相反),若之前习惯性添加了别名导致自动显示行号,可通过恢复原始参数解决,若配置文件中存在 alias cat='cat -n',需删除或注释该行以恢复正常行为。
- 组合其他工具:若已通过管道传输数据,可结合 sed 或 awk 进一步清理残留的行号标记。 cat file.txt | sed 's/^[[:space:]][0-9]+[[:space:]]//' > cleaned_file.txt
此命令会删除每行首的数字及周围空白字符,适用于修复被意外添加的行号。

less 分页器
- 临时禁用:默认情况下 less 不显示行号,但如果误触发了行号模式(如使用 less -N),可在交互界面按下 -N 快捷键关闭,或者启动时直接指定参数: less -N filename # 显示行号 less filename # 不显示行号
- 永久配置:编辑环境变量 LESS,在 ~/.bashrc 或 ~/.profile 中添加: export LESS="-N" # 全局禁用行号
重启终端后生效。
文本流编辑器(sed, awk, perl)
- sed 替换法:通过正则表达式匹配并删除行首的数字序列: sed 's/^[0-9]{1,}//' input.txt > output.txt
^[0-9]{1,} 表示以至少一个数字开头的模式,替换为目标空字符串,对于更复杂的空格情况(如制表符混合),可扩展为:
sed 's/^[[:space:]][0-9][0-9]//' input.txt
- awk 字段重置:将第一列清空后重新输出整行内容: awk '{$1=""; print $0}' input.txt > output.txt
- perl 单次处理:利用 Perl 的强大正则能力实现高效删除: perl -pe 's/^d+//' input.txt > output.txt
文本编辑器内的设置调整
Vim/Vi
- 会话级操作:在普通模式下执行以下任一命令即时生效: :set nonumber # 完整写法
:set nonu # 缩写形式
效果持续到当前编辑会话结束,若需重新启用,使用 :set number 或 :set nu。
- 永久配置:编辑个人配置文件 ~/.vimrc,添加: set nonu
保存后重新打开 Vim 即可默认无行号,此方法对所有新会话有效,且不影响已有窗口的状态。
Emacs
- 临时切换:按下 M-x 组合键后输入 linum-mode,回车确认以关闭行号显示,该模式为局部缓冲区设置,仅影响当前文件。
- 全局禁用:修改配置文件(如 ~/.emacs 或 ~/.emacs.d/init.el),加入: (global-linum-mode 0)
此设置会使所有通过 Emacs 打开的文件均不显示行号。
注意事项与最佳实践
- 数据备份优先:涉及修改原始文件的操作前,建议先创建副本,例如使用 sed 时可通过重定向输出到新文件验证结果后再覆盖原文件。
- 工具适配性差异:不同工具对“行号”的定义可能不同,Vim 的行号仅作为视觉辅助,不会嵌入文本;而某些脚本生成的带编号输出可能需要彻底清洗元数据。
- 环境变量干扰排查:若发现命令行为异常(如 cat 始终显示行号),检查是否存在全局别名定义(如 alias cat='cat -n'),及时修正配置文件。
FAQs
Q1: 为什么执行 cat filename 仍然显示行号?
A: 可能是由于 shell 中存在别名覆盖了默认行为,运行 type cat 查看是否被定义为 alias cat='cat -n',若是,请在 ~/.bashrc 中删除或注释掉相关别名定义,重启终端后即可恢复正常。
Q2: 如何在 Vim 中既保留部分视图的行号又关闭其他窗口的显示?
A: Vim 支持按窗口独立控制设置,在目标窗口执行 :set nonu 仅关闭当前窗口的行号;其他窗口保持原有状态,若需频繁切换,可将该命令绑定到快捷键(如 `nnoremap
