vim编辑器是大部分Linux和unix系统内置编辑器,也是每个系统管理员每天要用到的工具之一。可能很多的管理员每天都会有一个惯性思维,“我要让vim显示某个文本文件的行号。等下就是要按ESC键切到 :命令行,然后使用
set number!
看到这个,有些同学就疑问了,不是set nu或者set number就可以了吗?这个结尾感叹号“!”不是多余的吗?我们今天就是要来研究这个问题。实际上vim的行号有三种类型:
- 绝对行号 absolute
- 相对行号 relative
- 混合行号 hybrid
在vim中如何正确显示绝对行号
在各种IDE开发环境中,我们都会看到绝对行号,它以1开始而以最后一行的行数为结尾。就像我们常做的按ESC输入:转入命令行模式,输入:set number ,vim就会在左侧显示绝对行号。如果本来左侧就已经显示绝对行号,可以输入 :set nonumber或者:set nonu 来取消显示绝对行号。
其次,我们还可以永久性让vim记得加入行号,打开".vimrc“配置文件
vim ~/.vimrc
增加 set number 内容,然后 :wq 保存退出。这样下去使用vim的时候,它就自动显示绝对行号了。当然不需要的时候也可以删除这行内容,就可以取消绝对行号的自动显示了。
在vim中如何正确显示相对行号
同样,我们也要了解一下相对行号,和文件浏览原理一样,光标所在行就是当前行,而当前行的上方或者下方行就是相对行,比如当前行为0,上方第一行则为1,第二行则为2,以此类推,当然下方的行也如此情况。和绝对行号的显示操作一样,我们将当前行移至非第一行,按ESC进入命令行模式,输入 :set relativenumber 或者 :set rnu , 那么我们就看到了当前行上下方的各行行号发生了相对数字的变化。取消相对行号显示,则是在命令行模式输入 :set norelativenumber或者 set nornu。
其次,我们也可以让vim永久性记住显示相对行号,和上述的绝对行号的操作类似,在vimrc配置文件中,将set number修改成 set relativenumber。取消相对行号显示,只需要删除或者注释掉即可。这样我们就可以让vim下次运行时自动显示或者取消显示相对行号了。
在vim中如何正确显示混合行号
那么,我们接下来讨论什么是混合行号以及如何切使用混合行号。其实,在混合行号显示模式开启的时候,光标所在当前行的行号为文件的绝对行号,而当前行之外的其它行则为当前行的相对行号。比如当前行为80,而上方第一行为1,其它行类推,下方行也如此情况。
我们来看看如何开启混合行号显示模式。同样,我们可以临时用命令行模式来切换混合行号的显示,开启
set number relativenumber'
,取消模式则为
set number norelativenumber'
。
同理,我们也可以在vimrc配置文件中永久地开启混合行号显示的模式,只需要增加或取消 set number relativenumber 进行切换。
关于感叹号的作用
最后我们回到 set number! 这个符号问题,实际上,如果它是取反的意思,如果已经处于行号显示模式,那么set number! 则为取消行号显示模式。
如有不足之处,请各位同学批评指教。