摘要:一些有用的信息,比如語法檢查的內容信息。分別指的是與環境。文件完整路徑后面采用橙色前景色顯示的是語法檢查的信息。
我將 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 可能不搭。不過我個人來講,愿意接受這些不足。
僅僅是分享一個方案,如何選擇取決于你自己。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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 資源列表...
閱讀 3801·2023-04-26 02:07
閱讀 3679·2021-10-27 14:14
閱讀 2866·2021-10-14 09:49
閱讀 1631·2019-08-30 15:43
閱讀 2619·2019-08-29 18:33
閱讀 2375·2019-08-29 17:01
閱讀 922·2019-08-29 15:11
閱讀 592·2019-08-29 11:06