在Linux系统中,vi(或其增强版vim)作为常用的文本编辑器,默认情况下可能显示行号以方便定位代码或文本,但在某些场景下,如复制代码时无需行号、查看日志时减少干扰,或编辑配置文件时避免格式错乱,用户可能需要取消行号显示,取消行号的方法分为临时取消和永久取消两种,分别适用于不同的使用需求,下面将详细介绍具体操作步骤及注意事项。
临时取消行号(仅对当前编辑会话有效)
临时取消行号是指在当前打开的文件编辑会话中隐藏行号,关闭文件或退出vi后再次打开文件,行号仍会恢复默认显示状态,这种方法适用于临时查看或编辑文件,且不希望修改全局配置的场景。
操作步骤:
- 进入命令模式:打开文件后,首先确保当前处于vi的命令模式,如果处于插入模式(左下角显示“– INSERT –”),按
Esc
键切换至命令模式(左下角显示文件名或空)。 - 执行取消行号命令:在命令模式下,输入以下任一命令并按回车键:
- 验证效果:命令执行后,文件左侧的行号会立即消失,若需恢复行号,可输入
set nu
(nu
为number
的缩写)。
注意事项:
- 临时取消方法仅对当前编辑的文件有效,退出vi后重新打开同一文件,行号会恢复为默认状态(通常默认显示行号)。
- 如果通过
vi filename
打开文件时,系统实际调用的是vim(Linux中vi
命令常指向vim),上述命令同样适用。
永久取消行号(对所有编辑会话生效)
永久取消行号是通过修改vi/vim的配置文件,使行号默认不显示,之后每次打开文件均会生效,这种方法适合长期不需要行号显示的用户,避免每次编辑时重复输入命令。
配置文件位置:
vi/vim的配置文件通常为用户主目录下的~/.vimrc
(若使用vi而非vim,配置文件可能是~/.exrc
,但现代Linux系统多已统一使用~/.vimrc
),如果该文件不存在,可手动创建。
操作步骤:
- 打开配置文件:在终端中输入以下命令打开
~/.vimrc
文件(若文件不存在,vi会自动创建):vi ~/.vimrc
- 添加取消行号配置:进入文件后,按
i
键进入插入模式,输入以下内容:set nonu
若需同时取消鼠标悬停时的行号提示(vim特有功能),可额外添加:
set nonumber
(注:
set nonu
和set nonumber
作用相同,前者为缩写,后者为完整命令,选其一即可。) - 保存并退出:按
Esc
键返回命令模式,输入wq
并回车,保存配置文件并退出。
生效方式:
- 配置保存后,当前终端会话下新打开的文件会立即取消行号显示。
- 若当前终端已打开vi/vim,需重新启动终端或重新加载配置文件(在终端输入
source ~/.vimrc
,需在vi/vim的命令模式下执行)才能生效。
注意事项:
- 如果
~/.vimrc
文件中存在冲突配置(如同时有set nu
和set nonu
),以最后一条配置为准,建议检查文件中是否有其他行号相关设置。 - 若只想对特定文件类型取消行号(如只对日志文件
.log
不显示行号),可在~/.vimrc
中添加以下规则:autocmd FileType log set nonu
临时取消与永久取消方法对比
为更直观理解两种方法的区别,可通过下表对比:
方法类别 | 具体操作 | 作用范围 | 生效时间 | 适用场景 |
---|---|---|---|---|
临时取消 | 命令模式下输入set nonu |
当前编辑的文件 | 立即生效,退出后失效 | 临时查看/编辑文件,无需修改配置 |
永久取消 | ~/.vimrc 中添加set nonu |
所有通过vi/vim打开的文件 | 配置保存后新文件生效 | 长期不需要行号显示,避免重复操作 |
相关问答FAQs
问题1:为什么执行set nonu
后行号没有消失?
解答:可能的原因有3点:
- 未进入命令模式:
set
系列命令需在命令模式下执行,若处于插入模式(左下角显示“– INSERT –”),按Esc
键切换至命令模式后再输入命令。 - 文件被设置为只读:如果文件权限为只读(如系统配置文件),vi可能禁止修改显示状态,可通过
set noreadonly
解除只读限制后再尝试。 - 配置文件强制覆盖:若
~/.vimrc
中设置了set nu
(强制显示行号),会临时取消命令的配置,需检查~/.vimrc
文件,删除或注释掉set nu
(在行首添加,如" set nu
)。
问题2:如何让vi/vim在打开特定文件时自动取消行号,其他文件保留?
解答:可通过“模型ines”(Modelines)或“文件类型自动命令”实现,推荐以下两种方法:
-
使用模型ines(仅对vi/vim识别的文件有效):
在目标文件的第一行或最后一行添加以下内容(需确保文件可编辑):vim: set nonu
保存后,下次通过vi/vim打开该文件时,会自动读取模型ine并取消行号显示(需确保vim模型ine功能开启,默认开启)。
-
通过文件类型自动命令(推荐):
在~/.vimrc
中添加以下规则,针对特定文件类型(如.log
文件)取消行号:autocmd FileType log set nonu
保存配置后,所有扩展名为
.log
的文件打开时均不会显示行号,其他文件类型不受影响,若需针对特定文件名(如config.txt
),可使用:autocmd BufReadPost config.txt set nonu
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/32225.html