×

vi 命令手册

vi/vim 命令大全

vim 命令手册

Vim 关于Vim 安装Vim 用法Vim 配置vim 配置.vimrc方案vim 配置.vimrc方案1vim 配置.vimrc方案2Vim 文件合并Vim 技巧和建议Vim 插件Vim 参阅

Vimscript 编程参考

Vimscript 前言Vimscript 鸣谢Vimscript 预备知识Vimscript 打印信息Vimscript 设置选项Vimscript 基本映射Vimscript 模式映射Vimscript 精确映射Vimscript LeadersVimscript 编辑你的Vimrc文件Vimscript AbbreviationsVimscript 更多的MappingsVimscript 锻炼你的手指本地缓冲区的设置和映射Vimscript 自动命令Vimscript 本地缓冲区缩写Vimscript 自动命令组Operator-Pending 映射Operator-Pending 更多映射Vimscript 状态条Vimscript 负责任的编码Vimscript 变量Vimscript 变量作用域Vimscript 条件语句Vimscript 比较Vimscript 函数Vimscript 函数参数Vimscript 数字Vimscript 字符串Vimscript 字符串函数Vimscript Execute命令Vimscript Normal命令Vimscript 执行normal!Vimscript 基本的正则表达式Grep 运算符Operator 第1部分Grep 运算符Operator 第2部分Grep 运算符Operator 第3部分Vimscript 列表Vimscript 循环Vimscript 字典Vimscript 切换Vimscript 函数式编程Vimscript 路径Vimscript 创建一个完整的插件Vimscript 基本插件配置方式用Pathogen配置插件Vimscript 检测文件类型Vimscript 基本语法高亮Vimscript 高级语法高亮Vimscript 基本折叠Vimscript 高级折叠Vimscript 段移动原理Vimscript Potion段移动Vimscript 外部命令Vimscript 自动加载Vimscript 文档Vimscript 发布Vimscript 还剩下什么?

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

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

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

通用格式

阅读: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来为不同的文件定义不同的状态条。确保使用了自动命令组防止自动命令被重复创建(永远记住)。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)