Vim 狀態列

Posted by Adam on August 24, 2022
## 自訂狀態列 ```vim " ========================================================== " 狀態列 " ========================================================== " --- 自定義狀態列顏色 --- " ctermfg 是文字顏色,ctermbg 是背景顏色 (256 色號) " StatusNormal: 綠底黑字 (Normal 模式) hi StatusNormal ctermfg=232 ctermbg=148 cterm=bold " StatusInsert: 藍底黑字 (Insert 模式) hi StatusInsert ctermfg=232 ctermbg=039 cterm=bold " StatusVisual: 橘底黑字 (Visual 模式) hi StatusVisual ctermfg=232 ctermbg=214 cterm=bold " StatusMain: 深灰底白字 (中間資訊區) hi StatusMain ctermfg=255 ctermbg=238 cterm=none " 檔案類型區:深灰底、亮黃字 (模擬 Airline 的次要區塊) hi StatusFile ctermfg=226 ctermbg=240 cterm=none " 行列資訊區:黑底、白字 (最右邊的區塊) hi StatusPos ctermfg=255 ctermbg=232 cterm=bold " 0: 永遠不顯示。 " 1: 只有在多個視窗(Split)時才顯示。 " 2: 永遠顯示。即使只開一個檔案也要看到它。 set laststatus=2 set statusline= " %#DiffAdd#:套用「新增」的顏色(通常是綠底)。 " %{...}:執行 Vim 腳本。如果模式是 n (Normal),就顯示 NORMAL ,否則顯示空字串。 set statusline+=%#StatusNormal#%{(mode()=='n')?'\ \ NORMAL\ ':''} " 顯示模式 (Normal) " %#DiffDelete#:套用「刪除」的顏色(通常是紅底)。如果是 Insert 模式就顯示 INSERT 。 set statusline+=%#StatusInsert#%{(mode()=='i')?'\ \ INSERT\ ':''} " 顯示模式 (Insert) " %#DiffChange#:套用「修改」的顏色(通常是黃/紫底)。如果是 Visual 模式就顯示 " VISUAL "。 set statusline+=%#StatusVisual#%{(mode()=='v'\|\|mode()=='V'\|\|mode()=='\x16')?'\ \ VISUAL\ ':''} " 顯示模式 (Visual) " %#StatusLine#:切換回標準的狀態列顏色。 " %f: 目前檔案路徑 " %m: 若檔案已修改,顯示 [+] " %r:唯讀標記(Read-only)。如果是唯讀檔會顯示 [RO]。 " %h / %w:說明視窗(Help)或預覽視窗(Preview)的標記。 set statusline+=%#StatusLine#\ %f\ %m\ %r\ %h\ %w " 檔名 + 修改標記 + 唯讀 " %=:這是一個對齊切換點。它會產生足夠的空白,把之後的所有內容推到螢幕的最右邊。 set statusline+=%= " 分隔線 (左對齊與右對齊的分界) " 4. 檔案類型區 (給它專屬底色 StatusFile) set statusline+=%#StatusFile# " %Y:顯示檔案類型。例如 JAVA、PYTHON 或 VIM。 set statusline+=%Y\ " 檔案類型 (Java/Python) " &ff:File Format。顯示換行格式,例如 unix (LF) 或 dos (CRLF)。 set statusline+=[%{&ff}]\ " 換行格式 (unix/dos) " 5. 位置資訊區 (StatusPos) set statusline+=%#StatusPos# " %04l:目前的行號,不足 4 位補 0。 " %L:總行數。 " %03c:目前的列號(Column),不足 3 位補 0。 set statusline+=%04l/%L,%03c\ " 行號/總行數, 列號 " %p%%:顯示目前位置在全檔案的百分比(如 42%)。最後的 %% 是為了跳脫出一個 % 符號。 set statusline+=%p%%\ " 百分比 ```