当前位置: 代码迷 >> 综合 >> [Hacking VIM]之定制:自定义状态栏
  详细解决方案

[Hacking VIM]之定制:自定义状态栏

热度:93   发布时间:2024-01-16 09:41:31.0
在Vim编辑器的底部,你可以发现两个东西:一个是命令行缓冲(可以输入命令),另外一个是状态栏。在默认情况下,Vim显示的信息是很简短的,只是在右边显示当前光标所在的行和列以及当前打开的文件(如果有的话)。

当你执行一个命令的时候,状态栏将会被命令行替代,如果命令执行后输出了信息,则也会显示在状态栏的右边。

如果只是为了简单和快速的编辑,则这个状态栏也已经足够了,但是如果你每天使用Vim来编辑许多不同类型的文件,则最好使用一个信息丰富的状态栏。在这个技巧中,我们将看到状态栏如何显示丰富的文件信息。

设置状态栏如何显示可以简单的调用命令:
: set  statusline format

这里的format是一个类似printf的字符串(从c语言中借鉴过来),用来描述状态栏如何显示。

如果你使用 :help 'statusline' 来查看Vim帮助,你可以看到状态栏包含大量的信息,可能有些在你日常工作中还有用。

我的状态栏中总是包含下面的信息:
  • 正在编辑的文件名
  • 正在编辑的文件格式(DOS, Unix)
  • 当前文件的类型
  • 当前光标下字符的ASCII和16进制值
  • 当前光标所在的行和列
  • 文件的长度(包括行数)
下面的命令可以使得状态栏显示上面所有的信息
:set statusline=%F%m%r%h%w/ [FORMAT=%{&ff}]/ [TYPE=%Y]/ [ASCII=/%03.3b]/ [HEX=/%02.2B]/ [POS=%04l,%04v][%p%%]/ [LEN=%L]

我在其中加了'[]'用来分割各个类型的信息,这仅仅是为了显示加入的,如果需要的话可以去掉。


尽管如此,我们可以看到在默认情况下状态栏还是会显示旧的状态栏,这是因为Vim默认根本就不显示状态栏,而仅仅显示命令缓冲区的一些信息。为了告诉Vim你真的需要一个状态栏,可以将下面的语句加入到vimrc中,这个命令将保证状态栏显示在编辑器窗口的倒数第二行。
: set  laststatus = 2

可以看到现在命令缓冲区总是在编辑器窗口的最下边,而状态栏则也总是显示在下面。当然,状态栏确实会占据一些编辑空间,但是你随时可以决定是否需要显示状态栏。你可以在Vim中执行下面的命令来隐藏状态栏:
: set  laststatus = 0