我想让vim的状态栏更加丰富有趣,为此我需要一些想法。您如何自定义状态栏?
我想让vim的状态栏更加丰富有趣,为此我需要一些想法。您如何自定义状态栏?
注:vim-airline 在 vimscript 选项中越来越受欢迎,因为 powerline 已经改用 python。
看起来现在是powerline 的时代了:
正常状态行
其他插件(例如ctrlp)的自定义状态行
这是我的代码:
set statusline=
set statusline +=%1*\ %n\ %* "buffer number
set statusline +=%5*%{&ff}%* "file format
set statusline +=%3*%y%* "file type
set statusline +=%4*\ %<%F%* "full path
set statusline +=%2*%m%* "modified flag
set statusline +=%1*%=%5l%* "current line
set statusline +=%2*/%L%* "total lines
set statusline +=%1*%4v\ %* "virtual column number
set statusline +=%2*0x%04B\ %* "character under cursor
这是我使用的颜色:
hi User1 guifg=#eea040 guibg=#222222
hi User2 guifg=#dd3333 guibg=#222222
hi User3 guifg=#ff66ff guibg=#222222
hi User4 guifg=#a0ee40 guibg=#222222
hi User5 guifg=#eeee40 guibg=#222222
guifg
和guibg
是针对gvim
的。如果您在终端中运行vim
,请尝试使用ctermfg
和ctermbg
。您还需要不同的颜色,数字1-16或1-256,这取决于您在vim中启用了多少种颜色。每个数字对应的颜色请参见相应颜色。 - joelostblom.gvimrc
或.vimrc
中。如果你要设置guifg
,请将它们放在.gvimrc
中,因为它只适用于gvim,而ctermfg
可以放在.vimrc
中。 - Tassosgui
部分替换为 cterm
并将它们放置在您的 .vimrc 中即可。您还可以设置喜欢的 gui
和 cterm
变体,以便同时满足您对 vim 和 gvim 的需求。 - Tassos这是我使用的一个:
set statusline=
set statusline+=%7*\[%n] "buffernr
set statusline+=%1*\ %<%F\ "File+path
set statusline+=%2*\ %y\ "FileType
set statusline+=%3*\ %{''.(&fenc!=''?&fenc:&enc).''} "Encoding
set statusline+=%3*\ %{(&bomb?\",BOM\":\"\")}\ "Encoding2
set statusline+=%4*\ %{&ff}\ "FileFormat (dos/unix..)
set statusline+=%5*\ %{&spelllang}\%{HighlightSearch()}\ "Spellanguage & Highlight on?
set statusline+=%8*\ %=\ row:%l/%L\ (%03p%%)\ "Rownumber/total (%)
set statusline+=%9*\ col:%03c\ "Colnr
set statusline+=%0*\ \ %m%r%w\ %P\ \ "Modified? Readonly? Top/bot.
高亮显示开启功能:
function! HighlightSearch()
if &hls
return 'H'
else
return ''
endif
endfunction
颜色(改编自 ligh2011.vim):
hi User1 guifg=#ffdad8 guibg=#880c0e
hi User2 guifg=#000000 guibg=#F4905C
hi User3 guifg=#292b00 guibg=#f4f597
hi User4 guifg=#112605 guibg=#aefe7B
hi User5 guifg=#051d00 guibg=#7dcc7d
hi User7 guifg=#ffffff guibg=#880c0e gui=bold
hi User8 guifg=#ffffff guibg=#5b7fbb
hi User9 guifg=#ffffff guibg=#810085
hi User0 guifg=#ffffff guibg=#094afe
echo &hls ? 'H' : ''
。在我的情况下,代码如下:let &stl.="%6*%01(%{&hls?'H':''}%)%0* "
- SergioAraujo我发现很有用的一点是知道当前正在使用哪个复制/粘贴缓冲区(寄存器):%{v:register}
。否则,我的完整状态行几乎与标准行完全相同。
:set statusline=%<%f\ %h%m%r\ %y%=%{v:register}\ %-14.(%l,%c%V%)\ %P
有时候少即是多,你在编码时真的需要知道你正在处理的文件百分之几以及文件类型吗?
set statusline=%F%m%r%h%w\
set statusline+=%{fugitive#statusline()}\
set statusline+=[%{strlen(&fenc)?&fenc:&enc}]
set statusline+=\ [line\ %l\/%L]
set statusline+=%{rvm#statusline()}
我还喜欢使用尽可能少的颜色,以免分散注意力。
摘自:https://github.com/krisleech/vimfiles
注: rvm#statusline
是 Ruby 特定的,fugitive#statusline
是 git 特定的。
我目前使用的状态栏设置如下:
set laststatus=2
set statusline=\ %f%m%r%h%w\ %=%({%{&ff}\|%{(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\")}%k\|%Y}%)\ %([%l,%v][%p%%]\ %)
这是我的完整的 .vimrc 文件: http://gabriev82.altervista.org/projects/vim-configuration/
(说明:该段内容为一个链接,无需翻译)设置状态行=%<%f%m\ \[%{&ff}:%{&fenc}:%Y]\ %{getcwd()}\ \ \[%{strftime('%Y/%b/%d\ %a\ %I:%M\ %p')}\]\ %=\ 行:%l\/%L\ 列:%c%V\ %P
这是我的,给出建议