2011-02-16 106 views
4

每當我在屏幕底部的vim中寫入時,它會提供一些關於寫入的信息,如文件名和寫入的數量。我還希望在信息中包括寫入時間。我經常發現自己正在編輯一個文件,然後忘記我是否寫了一個文件。我還想在那裏比較一下當我最後一次寫一個特定的文件與我正在處理的其他文件相比較的時間。有沒有人有任何建議如何做到這一點?在vim中寫入後,如何在狀態欄上顯示時間?

謝謝!

回答

4

看看'statusline'選項。這使您可以完全自定義狀態行上顯示的內容。

:help 'statusline' 

您可以使創建整個狀態行的功能,也可以使用%{},使這部分是一個函數行的結果。

%{strftime('%c',getftime(expand('%')))} 

應該給出當前文件的'修改時間'。

把它放在一個函數中會更好,因爲你可以在獲取時間之前檢查當前文件是否存在(這會更健壯)。我將把它作爲練習,讓你閱讀statusline的幫助,並決定你想要的內容。嘗試一些事情,看看你如何繼續!

:help function-list 
:help strftime() 
:help getftime() 
:help expand() 
:help :function 
+0

非常感謝您的回答,完美工作! – Grammin 2011-02-16 18:22:03

3

因此,繼承人是我結束了與主要得益於鋁的方向:

:hi User1 term=NONE cterm=NONE ctermfg=Magenta ctermbg=Black 
:set laststatus=2 
:set statusline=%1*%F%h%m%w\ [Time:\ %{strftime(\"%H:%M\")}]\ [Mod\ Time:\ %{strftime(\"%H:%M:%S\",getftime(expand(\"\%\%\")))}]%=\ [%p%%]\ [%l/%L] 

說明:

:hi User1 term=NONE cterm=NONE ctermfg=Magenta ctermbg=Black 

該命令設置配置文件的背景色被稱爲USER1等於黑和字顏色等於洋紅色。我們所做的是使狀態行與此配置文件相同,以便我們可以更改狀態欄的顏色。

:set laststatus=2 

該命令通過將狀態欄放在vim命令底部兩行中來使狀態欄始終可見。

:set statusline=%1*%F%h%m\ [Time:\ %{strftime(\"%H:%M\")}]\ [Mod\ Time:\ %{strftime(\"%H:%M:%S\",getftime(expand(\"\%\%\")))}]%=\ [%p%%]\ [%l/%L] 

這是實際顯示狀態欄中的內容的命令。在這個命令中,我們使用幾個vim專用的函數(例如strftime,expand ...)。我們還使用%(字母)來表示特定的vim變量。文本的其餘部分將打印出用\寫入屏幕的內容,然後用空格表示空格。現在來描述具體的變量。

  • %1*是VAR的對應於我們在第一條命令做了顏色,這種設置狀態欄等於這些顏色
  • %F%h%m說顯示完整的文件名,幫助文件標誌和修改標誌
  • [Time:\ %{strftime(\"%H:%M\")}]\說顯示[時間:(當前時間)]並在小時和分鐘顯示它。如果你想要一個不同的時間格式,比如可能包含年份或者其他內容,請參閱:help strftime。
  • [Mod\ Time:\ %{strftime(\"%H:%M:%S\",getftime(expand(\"\%\%\")))}]顯示[Mod​​ Time:(mod time)]。它在幾小時內:分鐘:秒。
  • %=\ [%p%%]\ [%l/%L]說右對齊並顯示你已經過的文件的百分比和[(當前行數)/(最大行數)]。