上一篇
在linux中如何关闭行号
- Linux
- 2025-07-26
- 7
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