摘要:一些有用的信息,比如语法检查的内容信息。分别指的是与环境。文件完整路径后面采用橙色前景色显示的是语法检查的信息。
我将 space-vim 的状态栏多带带提取成为一个插件: https://github.com/liuchengxu... , 可直接安装试用。
首先看一下最后的效果:
知己知彼,百战不殆。先来分析一下使用 airline 与 lightline 有什么好处?
漂亮,酷炫,这毋庸置疑。
airline 与很多插件集成的非常好,真是省心又省力。
那有什么不足之处呢?
airline 可能会导致 100 ms 的启动延迟。具体可以看这里 https://github.com/liuchengxu..., 这里也有一篇关于 vim 启动优化非常好的文章。
定制性依旧不高,或者说深度定制的门槛有点高,不是那么容易上手。我曾经尝试过深入修改过 airline,不过并不顺利。
它们所提供的信息可能过于庞杂,显得有些冗余。
那么如何通过纯手工制作一个与 airline/lightline 相比也还不错的 statusline 呢?
什么叫不错?这个因人而异,按照我个人的审美而言,首先不能太单调(我只关心漂不漂亮),其次得显示出一些有用的信息。那么就会涉及到以下一些内容:
颜色转换,也就是各部分前景色,背景色之类的。
一些有用的信息,比如语法检查的内容信息。
为了漂亮,我们可能还会选择添加一些 Unicode 字符进去。
function! Buf_total_num() return len(filter(range(1, bufnr("$")), "buflisted(v:val)")) endfunction function! File_size(f) let l:size = getfsize(expand(a:f)) if l:size == 0 || l:size == -1 || l:size == -2 return "" endif if l:size < 1024 return l:size." bytes" elseif l:size < 1024*1024 return printf("%.1f", l:size/1024.0)."k" elseif l:size < 1024*1024*1024 return printf("%.1f", l:size/1024.0/1024.0) . "m" else return printf("%.1f", l:size/1024.0/1024.0/1024.0) . "g" endif endfunction set statusline=%<%1*[B-%n]%* " TOT is an abbreviation for total set statusline+=%2*[TOT:%{Buf_total_num()}]%* set statusline+=%3* %{File_size(@%)} %* set statusline+=%4* %F %* set statusline+=%5*『 %{exists("g:loaded_ale")?ALEGetStatusLine():""}』%{exists("g:loaded_fugitive")?fugitive#statusline():""}%* set statusline+=%6* %m%r%y %* set statusline+=%=%7* %{&ff} | %{"".(&fenc==""?&enc:&fenc).((exists("+bomb") && &bomb)?",B":"")." |"} %-14.(%l:%c%V%)%* set statusline+=%8* %P %* " default bg for statusline is 236 in space-vim-dark hi User1 cterm=bold ctermfg=232 ctermbg=179 hi User2 cterm=None ctermfg=214 ctermbg=242 hi User3 cterm=None ctermfg=251 ctermbg=240 hi User4 cterm=bold ctermfg=169 ctermbg=239 hi User5 cterm=None ctermfg=208 ctermbg=238 hi User6 cterm=None ctermfg=246 ctermbg=237 hi User7 cterm=None ctermfg=250 ctermbg=238 hi User8 cterm=None ctermfg=249 ctermbg=240
简单介绍一下重点:%1*[foo]%*, hi User1 ......, 改变的便是 [foo] 部分的 style, 比如前景色,背景色,粗体等等。如果你也想要尝试自己定制一番,按照个人喜好照葫芦画瓢即可 :p.
上面的示例似乎有些复杂,下面给出一个简略版本:
set statusline+=%4* %F %* hi User4 cterm=bold ctermfg=169 ctermbg=239
分两步:
%数字* + 后面跟上所要在 statusline 中显示的内容 +%*,圈出所要进行操作的范围,比如简略版本中为 %F , 即为 空格 文件的全路径 空格。
hi User数字 cterm=bold ctermfg=111 ctermbg=111 gui=bold guifg=111 guibg=111 ,就会 highlight 上面圈出的范围。 cterm, gui 分别指的是 terminal 与 GUI 环境。 fg,bg 为前景,背景色。数字可以自己定义。 hi User1 ... 就会对 %1* ... %* 所圈中的 ... 进行 highlight 操作。
也可以不用数字,采用自定义名称。 比如%4* 可替换为%#highlightgroup#, highlightgroup 为一个自定义的名称,那么%4* %F %* 也可以写为 %#fullPath# %F %*, hi fullPath ... 进行 highlight 就可以了。
至此你应该可以操作自己的 statusline 了。这里是 256 色对照表 , 这里 是我给出的示例出处。
如果你不喜欢 airline 可能导致 vim 启动延迟 100 ms, 或是喜欢无插件版本的 vim, 就可以使用这个方法来进行 statusline 的美化了。实际上,这同样也适用于 tabline.
顺便介绍一下 space-vim 的 statusline 值得关注的一些部分,[B-1] 代表 buffer 1, 1 为当前 buffer 对应的编号。[TOT 3], TOT 指的是 total, 当前共有多少 buffer,可以使用 Tab 快速切换。文件完整路径后面采用橙色前景色显示的是 ale 语法检查的信息。其他部分比较显然,值得关注的点也不多就不介绍了。
末了,说一下上面的缺点:所有 window 的 statusline 都是很相似的,可能不能像 airline/lightline 那样容易区分出哪个是当前光标所在的 window。 而且跟你的 colorscheme 可能不搭。不过我个人来讲,愿意接受这些不足。
仅仅是分享一个方案,如何选择取决于你自己。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/24917.html
摘要:插件介绍是一款纯漂亮的和美化效果。可以和多种字体图标结合使用,对原生的和进行美化,还可以制作按钮点击时的动画效果。支持的图标库有安装可以使用,或来安装。 插件介绍 pretty.css是一款纯css3漂亮的checkbox和radio美化效果。pretty.css可以和多种字体图标结合使用,对原生的checkbox和radio进行美化,还可以制作按钮点击时的动画效果。 showImg(...
摘要:转载来源包管理器管理着库,并提供读取和打包它们的工具。能构建更好应用的客户端包管理器。一个整合和的最佳思想,使开发者能快速方便地组织和编写前端代码的下一代包管理器。很棒的组件集合。隐秘地使用和用户数据。 转载来源:https://github.com/jobbole/aw... 包管理器管理着 javascript 库,并提供读取和打包它们的工具。•npm – npm 是 javasc...
摘要:转载来源包管理器管理着库,并提供读取和打包它们的工具。能构建更好应用的客户端包管理器。一个整合和的最佳思想,使开发者能快速方便地组织和编写前端代码的下一代包管理器。很棒的组件集合。隐秘地使用和用户数据。 转载来源:https://github.com/jobbole/aw... 包管理器管理着 javascript 库,并提供读取和打包它们的工具。•npm – npm 是 javasc...
摘要:一个专注于浏览器端和兼容的包管理器。一个整合和的最佳思想,使开发者能快速方便地组织和编写前端代码的下一代包管理器。完全插件化的工具,能在中识别和记录模式。健壮的优雅且功能丰富的模板引擎。完整的经过充分测试和记录数据结构的库。 【导读】:GitHub 上有一个 Awesome – XXX 系列的资源整理。awesome-javascript 是 sorrycc 发起维护的 JS 资源列表...
阅读 3647·2023-04-26 02:07
阅读 3606·2021-10-27 14:14
阅读 2787·2021-10-14 09:49
阅读 1530·2019-08-30 15:43
阅读 2562·2019-08-29 18:33
阅读 2311·2019-08-29 17:01
阅读 845·2019-08-29 15:11
阅读 537·2019-08-29 11:06