W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Vim允許自定義每個(gè)窗口底部的狀態(tài)條顯示的文字,你可以通過(guò)設(shè)置statusline
選項(xiàng)來(lái)進(jìn)行自定義。執(zhí)行下面的命令:
:set statusline=%f
你可以在狀態(tài)條上看到當(dāng)前所編輯文件的路徑(相對(duì)于當(dāng)前路徑)。再執(zhí)行這個(gè)命令:
:set statusline=%f\ -\ FileType:\ %y
現(xiàn)在你可以在狀態(tài)條中看到類(lèi)似foo.markdown - FileType: [markdown]
這樣的文字。
如果你熟悉C語(yǔ)言中的printf
或者Python的字符串插值,那么這個(gè)選項(xiàng)的格式看起來(lái)會(huì)比較眼熟。如果不熟悉,你只需要記住以%
開(kāi)頭的字符串會(huì)被展開(kāi)為不同的文字,這取決于%
后面的字符。在上面的示例中,%f
會(huì)被替換為文件名,%y
會(huì)被替換為文件類(lèi)型。
注意狀態(tài)條中的空格需要反斜線進(jìn)行轉(zhuǎn)義,這是因?yàn)?code>set可以同時(shí)設(shè)置多個(gè)選項(xiàng),這些選項(xiàng)會(huì)用空格分隔,我們?cè)诘诙轮v過(guò)這個(gè)。
狀態(tài)條設(shè)置可以很快變得非常復(fù)雜,不過(guò)有一個(gè)更好的辦法來(lái)設(shè)置它們以至于讓它們看起來(lái)更清晰。執(zhí)行下面的命令:
:set statusline=%f " 文件的路徑
:set statusline+=\ -\ " 分隔符
:set statusline+=FileType: " 標(biāo)簽
:set statusline+=%y " 文件的類(lèi)型
第一個(gè)命令使用=
來(lái)設(shè)置狀態(tài)條只顯示文件名,從而將之前的所有會(huì)在狀態(tài)條中顯示的值都屏蔽掉。之后再使用+=
逐漸添加其他要顯示的內(nèi)容,一次添加一條。同時(shí)還使用注釋來(lái)說(shuō)明每一條所表示的含義以方便其他的人閱讀我們的代碼(也會(huì)方便我們自己以后閱讀)。
執(zhí)行下面的命令:
:set statusline=%l " 當(dāng)前行號(hào)
:set statusline+=/ " 分隔符
:set statusline+=%L " 總行數(shù)
現(xiàn)在狀態(tài)條只包含當(dāng)前所在行以及文件的總行數(shù),并且顯示成12/223
這個(gè)樣子。
可以在%
后面添加額外的字符來(lái)改變狀態(tài)條中信息的顯示樣式。執(zhí)行下面的命令:
:set statusline=[%4l]
現(xiàn)在狀態(tài)條中的文件行數(shù)會(huì)至少顯示為4個(gè)字符的寬度(例如:[ 12]
),這可以用于防止?fàn)顟B(tài)條中的文字總是令人厭煩地跳來(lái)跳去。
默認(rèn)情況下在值的左邊添加邊距。執(zhí)行下面的命令:
:set statusline=Current:\ %4l\ Total:\ %4L
你的狀態(tài)條看來(lái)會(huì)是這個(gè)樣子:
Current: 12 Total: 223
你可以使用-
將邊距添加在右邊,而不是左邊。執(zhí)行下面的命令:
:set statusline=Current:\ %-4l\ Total:\ %-4L
現(xiàn)在你的狀態(tài)條看起來(lái)會(huì)是這個(gè)樣子:
Current: 12 Total: 223
這樣就好看多了,因?yàn)閿?shù)字值是緊挨著它的標(biāo)簽的。
對(duì)于會(huì)被顯示為數(shù)字的代碼,你可以讓Vim使用0代替空格來(lái)填充邊距。執(zhí)行下面的命令:
:set statusline=%04l
現(xiàn)在當(dāng)光標(biāo)位于第12行的時(shí)候你的狀態(tài)條會(huì)顯示0012
。
最后,你可以設(shè)置一個(gè)代碼所要輸出的值的最大寬度。執(zhí)行下面命令:
:set statusline=%F
%F
會(huì)顯示當(dāng)前文件的_完整_路徑?,F(xiàn)在執(zhí)行下面的命令改變最大寬度:
:set statusline=%.20F
如果有必要路徑會(huì)被刪簡(jiǎn),像下面這樣:
<hapters/17.markdown
這可以用于防止路徑或者是其他的很長(zhǎng)的代碼占用整個(gè)行。
閱讀:help statusline
查看狀態(tài)條中代碼的通用格式:
%-0{minwid}.{maxwid}{item}
除了%
和item外其他都是可選的。
我們不會(huì)探討狀態(tài)條的更多細(xì)節(jié)(Vim的文檔有非常詳細(xì)的說(shuō)明,如果你想學(xué)到更多,建議閱讀它們),不過(guò)我們會(huì)介紹一個(gè)簡(jiǎn)單的代碼,這個(gè)代碼可以立即帶來(lái)價(jià)值。執(zhí)行下面的命令:
:set statusline=%f " 文件的路徑
:set statusline+=%= " 切換到右邊
:set statusline+=%l " 當(dāng)前行
:set statusline+=/ " 分隔符
:set statusline+=%L " 總行數(shù)
現(xiàn)在狀態(tài)條的左邊會(huì)包含文件的路徑,當(dāng)前行/總行數(shù)會(huì)顯示在狀態(tài)條的右邊。%=
這個(gè)代碼告訴Vim所有在此之后要在狀態(tài)條上顯示的信息都應(yīng)該右對(duì)齊(作為一個(gè)整體),而不是左對(duì)齊。
瀏覽:help statusline
中的可用代碼。先別在意那些你現(xiàn)在理解不了的代碼。
編輯你的~/.vimrc
文件創(chuàng)建一個(gè)自定義的狀態(tài)條。確保在set
中使用+=
來(lái)一條一條地定義要顯示的代碼,并且每一行的設(shè)置添加注釋來(lái)說(shuō)明每一條的含義。
嘗試使用自動(dòng)命令和setlocal
來(lái)為不同的文件定義不同的狀態(tài)條。確保使用了自動(dòng)命令組防止自動(dòng)命令被重復(fù)創(chuàng)建(永遠(yuǎn)記?。?/p>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: