Vim允許自定義每個窗口底部的狀態條顯示的文字,你可以通過設置`statusline`選項來進行自定義。執行下面的命令:
~~~
:set statusline=%f
~~~
你可以在狀態條上看到當前所編輯文件的路徑(相對于當前路徑)。再執行這個命令:
~~~
:set statusline=%f\ -\ FileType:\ %y
~~~
現在你可以在狀態條中看到類似`foo.markdown - FileType: [markdown]`這樣的文字。
如果你熟悉C語言中的`printf`或者Python的字符串插值,那么這個選項的格式看起來會比較眼熟。如果不熟悉,你只需要記住以`%`開頭的字符串會被展開為不同的文字,這取決于`%`后面的字符。在上面的示例中,`%f`會被替換為文件名,`%y`會被替換為文件類型。
注意狀態條中的空格需要反斜線進行轉義,這是因為`set`可以同時設置多個選項,這些選項會用空格分隔,我們在第二章講過這個。
狀態條設置可以很快變得非常復雜,不過有一個更好的辦法來設置它們以至于讓它們看起來更清晰。執行下面的命令:
~~~
:set statusline=%f " 文件的路徑
:set statusline+=\ -\ " 分隔符
:set statusline+=FileType: " 標簽
:set statusline+=%y " 文件的類型
~~~
第一個命令使用`=`來設置狀態條只顯示文件名,從而將之前的所有會在狀態條中顯示的值都屏蔽掉。之后再使用`+=`逐漸添加其他要顯示的內容,一次添加一條。同時還使用注釋來說明每一條所表示的含義以方便其他的人閱讀我們的代碼(也會方便我們自己以后閱讀)。
執行下面的命令:
~~~
:set statusline=%l " 當前行號
:set statusline+=/ " 分隔符
:set statusline+=%L " 總行數
~~~
現在狀態條只包含當前所在行以及文件的總行數,并且顯示成`12/223`這個樣子。
## 寬度和邊距
可以在`%`后面添加額外的字符來改變狀態條中信息的顯示樣式。執行下面的命令:
~~~
:set statusline=[%4l]
~~~
現在狀態條中的文件行數會至少顯示為4個字符的寬度(例如:`[ 12]`),這可以用于防止狀態條中的文字總是令人厭煩地跳來跳去。
默認情況下在值的左邊添加邊距。執行下面的命令:
~~~
:set statusline=Current:\ %4l\ Total:\ %4L
~~~
你的狀態條看來會是這個樣子:
~~~
Current: 12 Total: 223
~~~
你可以使用`-`將邊距添加在右邊,而不是左邊。執行下面的命令:
~~~
:set statusline=Current:\ %-4l\ Total:\ %-4L
~~~
現在你的狀態條看起來會是這個樣子:
~~~
Current: 12 Total: 223
~~~
這樣就好看多了,因為數字值是緊挨著它的標簽的。
對于會被顯示為數字的代碼,你可以讓Vim使用0代替空格來填充邊距。執行下面的命令:
~~~
:set statusline=%04l
~~~
現在當光標位于第12行的時候你的狀態條會顯示`0012`。
最后,你可以設置一個代碼所要輸出的值的最大寬度。執行下面命令:
~~~
:set statusline=%F
~~~
`%F`會顯示當前文件的_完整_路徑。現在執行下面的命令改變最大寬度:
~~~
:set statusline=%.20F
~~~
如果有必要路徑會被刪簡,像下面這樣:
~~~
<hapters/17.markdown
~~~
這可以用于防止路徑或者是其他的很長的代碼占用整個行。
## 通用格式
閱讀`:help statusline`查看狀態條中代碼的通用格式:
~~~
%-0{minwid}.{maxwid}{item}
~~~
除了`%`和item外其他都是可選的。
## 分割
我們不會探討狀態條的更多細節(Vim的文檔有非常詳細的說明,如果你想學到更多,建議閱讀它們),不過我們會介紹一個簡單的代碼,這個代碼可以立即帶來價值。執行下面的命令:
~~~
:set statusline=%f " 文件的路徑
:set statusline+=%= " 切換到右邊
:set statusline+=%l " 當前行
:set statusline+=/ " 分隔符
:set statusline+=%L " 總行數
~~~
現在狀態條的左邊會包含文件的路徑,當前行/總行數會顯示在狀態條的右邊。`%=`這個代碼告訴Vim所有在此之后要在狀態條上顯示的信息都應該右對齊(作為一個整體),而不是左對齊。
## 練習
瀏覽`:help statusline`中的可用代碼。先別在意那些你現在理解不了的代碼。
編輯你的`~/.vimrc`文件創建一個自定義的狀態條。確保在`set`中使用`+=`來一條一條地定義要顯示的代碼,并且每一行的設置添加注釋來說明每一條的含義。
嘗試使用自動命令和`setlocal`來為不同的文件定義不同的狀態條。確保使用了自動命令組防止自動命令被重復創建(永遠記住)。
- 前言
- 鳴謝
- 預備知識
- 打印信息
- 設置選項
- 基本映射
- 模式映射
- 精確映射
- Leaders
- 編輯你的Vimrc文件
- Abbreviations
- 更多的Mappings
- 鍛煉你的手指
- 本地緩沖區的選項設置和映射
- 自動命令
- 本地緩沖區縮寫
- 自動命令組
- Operator-Pending映射
- 更多Operator-Pending映射
- 狀態條
- 負責任的編碼
- 變量
- 變量作用域
- 條件語句
- 比較
- 函數
- 函數參數
- 數字
- 字符串
- 字符串函數
- Execute命令
- Normal命令
- 執行normal!
- 基本的正則表達式
- 實例研究:Grep 運算符(Operator),第一部分
- 實例研究:Grep運算符(Operator),第二部分
- 實例研究:Grep運算符(Operator),第三部分
- 列表
- 循環
- 字典
- 切換
- 函數式編程
- 路徑
- 創建一個完整的插件
- 舊社會下的插件配置方式
- 新希望:用Pathogen配置插件
- 檢測文件類型
- 基本語法高亮
- 高級語法高亮
- 更高級的語法高亮
- 基本折疊
- 高級折疊
- 段移動原理
- Potion段移動
- 外部命令
- 自動加載
- 文檔
- 發布
- 還剩下什么?