您的位置:58编程 > vim状态栏 Vimscript 状态条

vim状态栏 Vimscript 状态条

2023-03-24 00:33 Vim教程

vim状态栏 Vimscript 状态条

vim状态栏

Vim状态栏是一个非常有用的功能,它可以帮助我们更好地理解和使用Vim。它位于编辑器的底部,可以显示当前文件的名称、行号、列号、模式、文件类型、文件大小等信息。

Vim状态栏有三个部分:左侧显示当前文件的名称;中间显示当前光标所在行号和列号;右侧显示当前模式、文件大小和文件类型。

左侧: 文件名 
中间: 行号 列号 
右侧: 模式 文件大小 文件类型 

Vim的模式包括命令模式、普通模式、搜索模式、运行shell命令的模式、运行外部命令的模式、运行ex命令的模式。在不同的情况下,会出现不同的字样来代表不同的模式。

 
命令模式: -- INSERT -- 
正常/选中/字典/语法/关键字高亮: -- NORMAL -- 
运行shell命令: -- SHELL -- 
运行外部命令: -- EXTERNAL COMMAND -- 
运行ex命令: -- EX MODE --  											   

此外,Vim也会根据不同情况显示不同的文本大小信息:如“Ln xx Col xx”代表当前光标所在位置是xx行xx列;“xx,yy B”代表当前文本总共有xx字节yy字数;“xx,yy B Top xx% Bot xx%”代表当前光标所在位置占整个文本长度的上下xx%。

Vimscript 状态条

Vim允许自定义每个窗口底部的状态条显示的文字,你可以通过设置statusline选项来进行自定义。执行下面的命令:

:set statusline=%f

你可以在状态条上看到当前所编辑文件的路径(相对于当前路径)。再执行这个命令:

:set statusline=%f - FileType: %y

现在你可以在状态条中看到类似foo.markdown - FileType: [markdown]这样的文字。

如果你熟悉C语言中的printf或者Python的字符串插值,那么这个选项的格式看起来会比较眼熟。如果不熟悉,你只需要记住以%开头的字符串会被展开为不同的文字,这取决于%后面的字符。在上面的示例中,%f会被替换为文件名,%y会被替换为文件类型。

注意状态条中的空格需要反斜线进行转义,这是因为set可以同时设置多个选项,这些选项会用空格分隔,我们在第二章讲过这个。

状态条设置可以很快变得非常复杂,不过有一个更好的办法来设置它们以至于让它们看起来更清晰。执行下面的命令:

:set statusline=%f         " 文件的路径
:set statusline+= -      " 分隔符
:set statusline+=FileType: " 标签
:set statusline+=%y        " 文件的类型

第一个命令使用=来设置状态条只显示文件名,从而将之前的所有会在状态条中显示的值都屏蔽掉。之后再使用+=逐渐添加其他要显示的内容,一次添加一条。同时还使用注释来说明每一条所表示的含义以方便其他的人阅读我们的代码(也会方便我们自己以后阅读)。

执行下面的命令:

:set statusline=%l    " 当前行号
:set statusline+=/    " 分隔符
:set statusline+=%L   " 总行数

现在状态条只包含当前所在行以及文件的总行数,并且显示成12/223这个样子。

宽度和边距

可以在%后面添加额外的字符来改变状态条中信息的显示样式。执行下面的命令:

:set statusline=[%4l]

现在状态条中的文件行数会至少显示为4个字符的宽度(例如:[ 12]),这可以用于防止状态条中的文字总是令人厌烦地跳来跳去。

默认情况下在值的左边添加边距。执行下面的命令:

:set statusline=Current: %4l Total: %4L

你的状态条看来会是这个样子:

Current:   12 Total:  223

你可以使用-将边距添加在右边,而不是左边。执行下面的命令:

:set statusline=Current: %-4l Total: %-4L

现在你的状态条看起来会是这个样子:

Current: 12   Total: 223

这样就好看多了,因为数字值是紧挨着它的标签的。

对于会被显示为数字的代码,你可以让Vim使用0代替空格来填充边距。执行下面的命令:

:set statusline=%04l

现在当光标位于第12行的时候你的状态条会显示0012

最后,你可以设置一个代码所要输出的值的最大宽度。执行下面命令:

:set statusline=%F

%F会显示当前文件的_完整_路径。现在执行下面的命令改变最大宽度:

:set statusline=%.20F

如果有必要路径会被删简,像下面这样:

<hapters/17.markdown

这可以用于防止路径或者是其他的很长的代码占用整个行。

通用格式

阅读:help statusline查看状态条中代码的通用格式:

%-0{minwid}.{maxwid}{item}

除了%和item外其他都是可选的。

分割

我们不会探讨状态条的更多细节(Vim的文档有非常详细的说明,如果你想学到更多,建议阅读它们),不过我们会介绍一个简单的代码,这个代码可以立即带来价值。执行下面的命令:

:set statusline=%f         " 文件的路径
:set statusline+=%=        " 切换到右边
:set statusline+=%l        " 当前行
:set statusline+=/         " 分隔符
:set statusline+=%L        " 总行数

现在状态条的左边会包含文件的路径,当前行/总行数会显示在状态条的右边。%=这个代码告诉Vim所有在此之后要在状态条上显示的信息都应该右对齐(作为一个整体),而不是左对齐。

练习

浏览:help statusline中的可用代码。先别在意那些你现在理解不了的代码。

编辑你的~/.vimrc文件创建一个自定义的状态条。确保在set中使用+=来一条一条地定义要显示的代码,并且每一行的设置添加注释来说明每一条的含义。

尝试使用自动命令和setlocal来为不同的文件定义不同的状态条。确保使用了自动命令组防止自动命令被重复创建(永远记住)。

阅读全文
以上是58编程为你收集整理的vim状态栏 Vimscript 状态条全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS