状态横条
回忆上节课内容
我们上次研究了标尺
-
标尺
- 开启
se ru
- 关闭
se noru
- 开启
-
行号
- 开启
se nu
- 关闭
se nonu
- 开启
-
命令位置
- 开启
se showcmd
- 关闭
se noshowcmd
- 开启
-
跳转
- 用 29 G 跳转行号
- 用 19 | 跳转列号
- 用 29 % 跳到整个文件 29% 的位置
准备环境
# 下载素材
git clone http://github.com/overmind1980/vimtutorial.git进入目录
cd vimtutorial
还是从最简单的vim开始设置起
vi -u NONE oeasy.java
设置光标行
来看一个开关option
-
光标行
cursorline
- 光标
cursor
- 行
line
- 光标
:set cursorline
-
h 'cursorline'
- 给
cursorline
加了单引号 - 说明
cursorline
是一个属性option
- 给
设置光标列
有行就有列
-
光标行
cursorcolumn
- 光标
cursor
- 行
column
- 光标
:set cursorcolumn
-
h 'cursorcolumn'
- 给
cursorcolumn
加了单引号 - 说明
cursorcolumn
是一个属性option
- 给
改变底下的状态横条
有了行列位置
再配合标尺ruler
光标位置就很明确了
在
:h ruler
的时候-
偶然发现了一个新天地
statusline
-
statusline
意思是状态横条 - 在倒数第 2 行
-
statusline
也是一个可以set
的东西 - 我们来查看一下手册
:h statusline
- 好像可以直接给
statusline
赋值 - 我直接赋一个
oeasy
-
:set statusline=oeasy
-
然后还需要设置
laststatus
- 设置 laststatus = 0,不显式状态行
- 设置 laststatus = 1,仅当窗口多于一个时,显示状态行
- 设置 laststatus = 2,总是显式状态行
:set laststatus=2
statusline上可以放什么呢?
:h 'statusline'
显示属性
-
除了字符串常量之外是否能显示一些别的属性呢?
- 继续翻帮助手册
- 找到相关的
items
- 各种
items
有不同的属性(数字、文本、标志) - 每个
item
对应一个字母 - 这个字母需要通过
%
来进行转义 -
F
对应文件名
-
:set statusline=[oeasy]%F
- 此时,状态条就显示
[oeasy]当前文件名
- 此时,状态条就显示
[图片上传失败...(image-1afafe-1629343515020)]
标志属性
-
继续翻看属性
-
Flag
是标志位 -
m
是一个关于是否已经修改的标志位 - 把
%m
追加进入statusline
-
:set statusline=[oeasy]%F%m
-
修改文件后会显示未保存的
[+]
- 观察效果
-
保存后
[+]
会消失- 暗中观察...
数值属性
-
查到状态栏细节
-
N
代表Number
代表item
是一个数值类型 - 行号
l
、列号c
、百分比p
都是数值类型 - 用
[
、]
把数值型变量分开 -
%%
可以把%
转义显示出来
-
:set statusline=[oeasy]%F%m[%l,%c]%p%%
- 状态栏数值还可以随着光标变化
控制宽度
- 可以用格式来控制宽度
%-0{MinWidth}.{MaxWidth}{item}
-
%-040.40F
就是用40
的固定宽度显示F
- 如果超过范围的话就会把前面部分隐藏
:set statusline=[oeasy]%-040.40F%m[%l,%c]%p%%
- 一行总共
80
字符 - 后面的部分怎么办?
成组
[图片上传失败...(image-f8f6fc-1629343515020)]
我们可以把行和列组成一个
items group
-
用
(
、)
来封装这个组用
%
对(
、)
进行转义:set statusline=%([%l,%c]%)
这样就可以统一设置这个标尺组的宽度
-
:set statusline=%-010.10([%l,%c]%)
- 标尺组的宽度固定为10
-
同理文件名和文件是否修改也可以编成一组
:set statusline=%(%F%m%)
最终整合
-
最终整合总共分为三部分
- 文件
%-040.40(%F%m%)
- 标尺
%-030.30([%l,%c]%)
- 比例
%p%%
- 文件
-
关于状态横条还有一个总开关
-
:set laststatus=0
关闭 -
:set laststatus=2
开启
-
总结
-
我们这次了解到了状态横条
- 通过转义表示
item
- 控制
item
宽度的方法 - 将
item
成组的方法 - 还有一个总开关
laststatus
- 通过转义表示
但是每次都要写很长的一段话来配置很麻烦啊
我们能否写一个配置文件,让
vim
每次自动配置好呢?下次再说