在vim中更有用的状态行?[关闭]


150

我想使自己的状态行在Vim中更富信息性和趣味性,为此,我需要一些想法。您是如何自定义状态栏的?


5
@paxdiablo:有时值得花时间根据您的需要配置该工具,以便您可以更好地使用它,从而节省工作时间。
DarkDust 2011年

10
这应该是社区Wiki,因为没有正确的答案。
兰迪·莫里斯

3
与其说意见,不如说是利用学识渊博的人的经验和专业知识。发问者正在寻找他无法猜测的信息,而不是要求个人竞争最好的东西。答案将产生许多他以前没有的选择。仅仅一个问题有多个答案并不意味着它不是基于技术专长的问题。这个问题非常适合SO格式,应该保持开放状态。
NeilG

Answers:


134

编辑:-

注意由于电力线已经成为python,因此随着新的vimscript选项的出现,vim-airline受到了越来越多的关注。


似乎电力线是目前的状况:-

正常状态行

电源线

其他插件的自定义状态行(例如ctrlp

电源线


3
@Gavin我如何更改您的电源线段?您可以更新一些默认的细分受众群修改脚本吗?欢呼声

@Gavin我也很感激,如果您能分享您如何在vim-powerline中包含分支等内容
Eric Hu

1
只需执行以下操作,即可完成以下任何特殊操作:github.com/Lokaltog/vim-powerline#troubleshooting仅确保您在vimrc文件中具有“ let g:Powerline_symbols ='fancy'”并已安装了修补字体。
加文·吉尔默

这是一个不错的插件。但是因为这个原因,我第一次打开文件时的滚动性能非常不好。
Ahmed Aeon Axan

2
@AhmedAeonAxan试试航空公司,它启动很快(纯vimscript)。并花费更少的精力进行设置,尤其是使用Vundle或Pathogen。一旦安装了电力线字体,它或多或少看起来就像航空公司。github.com/Lokaltog/powerline-fonts
大雪

60

这是我的:

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

vim statusline

这是我使用的颜色:

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

1
c实际上是字节数,即使在vim帮助中有时也称为列数。您可以使用v来获取通常由列号表示的含义。
路德维希·威恩泽尔

谢谢@路德维希,我还没注意到。我将编辑答案。
塔索斯2012年

8
我喜欢在自己的行上注释每个附加值的清晰度。如果我7年前做到了,那我在上次安装干净的操作系统时就不会丢掉它。
布鲁诺·布鲁诺斯基

Sweeet!我使用此功能时缺少的一件事是分隔已拆分会话的行
Julio Marins

1
@trusktr请注意,guifgguibg用于gvim。如果您vim在终端中运行,请尝试ctermfgctermbg选择。您还将需要不同的颜色,数字1-16或1-256,取决于您在vim中启用了多少种颜色。每个数字对应的颜色
joelostblom

46

这是我使用的一种:

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

我的状态栏


2
很好,这避免了我的用例需要花哨的状态行插件,即:糖果
Nishant

1
您如何使颜色起作用?
trusktr

我尝试将其放置在任何colorscheme设置之后,但是我只看到了双音状态栏。
trusktr '02

@trusktr,不容易解释...。您需要将前2个块放入vimrc文件中,将颜色块放入当前的colorscheme文件中。您可以使用以下命令找到当前的colorcheme文件::colorscheme
Reman

1
仅使用像这样的三元运算符-> echo &hls ? 'H' : '' 在我的情况下,您的突出显示搜索会更短(没有任何功能):let &stl.="%6*%01(%{&hls?'H':''}%)%0* "
SergioAraujo,

20

我发现有用的是知道哪个复制/粘贴缓冲区(寄存器)当前处于活动状态:%{v:register}。否则,我的完整状态行看起来几乎与标准行完全一样。

:set statusline=%<%f\ %h%m%r\ %y%=%{v:register}\ %-14.(%l,%c%V%)\ %P

2
我的,这v:register确实非常有用!
nperson325681 2011年

寄存器处于活动状态是什么意思?我对寄存器的(不好的)理解是,它们基本上是用于存储文本的剪贴板。
罗伊姆森

15

有时少即是多,您真的需要在编码时知道文件所占的百分比吗?那文件类型呢?

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#statuslinegit。


1
git相关状态栏的+1
Patrick


1

set statusline=%<%f%m\ \[%{&ff}:%{&fenc}:%Y]\ %{getcwd()}\ \ \[%{strftime('%Y/%b/%d\ %a\ %I:%M\ %p')}\]\ %=\ Line:%l\/%L\ Column:%c%V\ %P

这是我的,给个建议

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.