【vim】【statusline】【狀態列】設定,顯示更多有用的資訊
阿新 • • 發佈:2019-01-30
在Vim的下方, 你可以看到兩個東西: 命令緩衝區(你可以鍵入命令的地方), 還有一個狀態條. 在預設的配置中, Vim中的狀態條非常得簡單, 並不提供多少資訊. 它就在右邊顯示了游標所在的行數和列數, 在左邊顯示了檔名(如果有的話).
當你執行一條命令的時候, 狀態條就是隱藏, 命令緩衝區就會出現. 如果你執行的命令輸出了某些資訊, 資訊就會在右邊的狀態條中顯示.
對於簡單和快速的編輯檔案, 這種狀態條是合適的. 但是如果你要每天都使用Vim並且有很多不同的檔案格式, 有一個能顯示更多資訊的狀態條會好一些.
在這個方案中, 給出幾個例子, 來看看狀態條是怎麼能顯示更多的資訊.
這個命令是設定狀態條應該如何顯示:
:set statusline format
format是用一個printf格式的字串(從C語言中過渡來的)來描述狀態條的顯示方式的.
如裡你通過:help 'statusline'去Vim的幫助系統檢視, 你就會知道狀態條可以包含很多資訊, 有一些在你日常工作中是非常重要的.
我的狀態條包含了下面這些資訊:
我正在編輯的檔案的檔名
我正在編輯的檔案的格式(DOS, UNIX)
我正在編輯的檔案所屬的檔案型別(Vim能夠識別的)
游標所在字元的ASCII碼和16進位制
游標所在文件的行數和列數
下面的命令將會把你的狀態條變成一個能顯示上面全部資訊的新正的資訊欄.
:set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
我在每部分資訊的兩邊都加了一對'[]', 這樣他們就比較容易辨認了. 這只是為了視覺效果, 如果不需要可以去掉的.
不過, 我們現在看到的狀態列還是先前的預設的那一個. 這個問題是因為Vim預設地不會顯示我們狀態條的. 它只會顯示一個帶有一點資訊的命令緩衝區. 要通過Vim你想到顯示一個新的狀態條, 只要把下面的這個命令加入到vimrc檔案中. 這個命令會確保你的狀態條總會顯示在視窗的倒數第二行:
:set laststatus=2
你會發現命令緩衝存在視窗的最後一行, 狀態條在它上面. 現在你可以一直都能看到你的檔案中的全部資訊. 這個狀態條確定佔用了一點地方, 但是你可以決定它要不要顯示. 你可以通過下面的命令將其隱藏(下次重啟Vim會恢復顯示):
:set laststatus=0
當你執行一條命令的時候, 狀態條就是隱藏, 命令緩衝區就會出現. 如果你執行的命令輸出了某些資訊, 資訊就會在右邊的狀態條中顯示.
對於簡單和快速的編輯檔案, 這種狀態條是合適的. 但是如果你要每天都使用Vim並且有很多不同的檔案格式, 有一個能顯示更多資訊的狀態條會好一些.
在這個方案中, 給出幾個例子, 來看看狀態條是怎麼能顯示更多的資訊.
這個命令是設定狀態條應該如何顯示:
:set statusline format
format是用一個printf格式的字串(從C語言中過渡來的)來描述狀態條的顯示方式的.
如裡你通過:help 'statusline'去Vim的幫助系統檢視, 你就會知道狀態條可以包含很多資訊, 有一些在你日常工作中是非常重要的.
我的狀態條包含了下面這些資訊:
我正在編輯的檔案的檔名
我正在編輯的檔案的格式(DOS, UNIX)
我正在編輯的檔案所屬的檔案型別(Vim能夠識別的)
游標所在字元的ASCII碼和16進位制
游標所在文件的行數和列數
下面的命令將會把你的狀態條變成一個能顯示上面全部資訊的新正的資訊欄.
:set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L]
我在每部分資訊的兩邊都加了一對'[]', 這樣他們就比較容易辨認了. 這只是為了視覺效果, 如果不需要可以去掉的.
不過, 我們現在看到的狀態列還是先前的預設的那一個. 這個問題是因為Vim預設地不會顯示我們狀態條的. 它只會顯示一個帶有一點資訊的命令緩衝區. 要通過Vim你想到顯示一個新的狀態條, 只要把下面的這個命令加入到vimrc檔案中. 這個命令會確保你的狀態條總會顯示在視窗的倒數第二行:
:set laststatus=2
你會發現命令緩衝存在視窗的最後一行, 狀態條在它上面. 現在你可以一直都能看到你的檔案中的全部資訊. 這個狀態條確定佔用了一點地方, 但是你可以決定它要不要顯示. 你可以通過下面的命令將其隱藏(下次重啟Vim會恢復顯示):
:set laststatus=0