每当我在屏幕底部的vim中写入时,它会提供有关写入的一些信息,例如文件名和写入的数量。我还想在信息中包含写入的时间。我经常发现自己正在编辑一个文件然后忘记我是否写过了。我还想在上次写一个特定文件的时候比较我正在处理的其他文件。有没有人对如何做到这一点有任何建议?
谢谢!
答案 0 :(得分:4)
查看'statusline'
选项。这允许您完全自定义状态行上显示的内容。
:help 'statusline'
您可以创建一个创建整个状态行的函数,也可以使用%{}
使其中的一部分成为函数行的结果。
%{strftime('%c',getftime(expand('%')))}
应该给出修改时间'当前文件。
最好将其粘贴在一个函数中,因为您可以在获取时间之前检查当前文件是否存在(这将更加健壮)。我会把它作为练习让你阅读状态线的帮助,然后决定你想要什么。尝试一些事情,看看你是如何上场的!
:help function-list
:help strftime()
:help getftime()
:help expand()
:help :function
答案 1 :(得分:3)
所以我最后得到的结果主要归功于Al的方向:
: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的配置文件的背景颜色设置为等于黑色,将字体颜色设置为等于Magenta。我们所做的是使状态行等于此配置文件,以便我们可以更改状态栏的颜色。
: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]
说右对齐并显示您经过的文件的百分比和[(当前行数)/(最大行数)]。