Uma linha de status mais útil no vim? [fechadas]

150

Gostaria de tornar minha linha de status no vim mais informativa e interessante, e para isso preciso de algumas idéias. Como você personalizou sua linha de status?

sica07
fonte
5
@paxdiablo: Às vezes, vale a pena gastar tempo configurando a ferramenta de acordo com as suas necessidades, para que você possa usá-la melhor e assim economizar tempo enquanto trabalha.
DarkDust 21/03/11
10
Este deve ser um wiki da comunidade, pois não há resposta correta.
Randall Morris
3
Não se trata apenas de opiniões, mas de aproveitar a experiência e os conhecimentos de indivíduos mais instruídos. O interlocutor está procurando informações que ele não consegue adivinhar, não pedindo que as pessoas competam sobre o que é melhor. As respostas gerarão várias opções que ele não tinha antes. Só porque uma pergunta tem mais de uma resposta, não significa que não seja uma questão baseada em conhecimentos técnicos. Esta pergunta se encaixa bem no formato SO e deve permanecer aberta.
NeilG

Respostas:

134

Editar:-

Observe que o vim- airlines está ganhando força como a nova opção vimscript, pois o powerline passou a python.


Parece powerline é onde está atualmente: -

Linha de status normal

linha de energia

Linhas de status personalizadas para outros plugins (por exemplo, ctrlp )

linha de energia

Gavin Gilmour
fonte
3
@ Gavin, como posso mudar para os seus segmentos de linha de energia? você poderia atualizar alguns scripts de modificação de segmento padrão? Cheers
Jerry Gao
@ Gavin Eu também agradeceria se você pudesse compartilhar como incluiu coisas como sua filial no vim-powerline #
Eric Hu Eric
1
Nada de especial foi feito em: github.com/Lokaltog/vim-powerline#trou soluço apenas certifique-se de ter "deixado g: Powerline_symbols = 'fancy'" em seu arquivo vimrc e com fontes corrigidas instaladas.
Gavin Gilmour
Este é um bom plugin. Mas meu desempenho de rolagem quando abro um arquivo pela primeira vez é muito ruim por causa disso.
Ahmed Aeon axan
2
@AhmedAeonAxan tenta companhia aérea, ela começa rápido (vimscript puro). E leva muito menos esforço para configurar, especialmente com Vundle ou Pathogen. E depois que você instala a fonte powerline, ela se parece mais ou menos com a companhia aérea. github.com/Lokaltog/powerline-fonts
snowbound
60

Aqui está o meu:

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

E aqui estão as cores que eu usei:

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
Tassos
fonte
1
c é realmente a contagem de bytes, mesmo que às vezes seja chamada de contagem de colunas, mesmo na ajuda do vim. Você pode usar v para obter o que normalmente se entende por número da coluna.
Ludwig Weinzierl
Obrigado @Ludwig, eu não notei isso. Vou editar a resposta.
Tassos
8
Adoro a clareza de comentar cada valor acrescentado em sua própria linha. Se eu tivesse feito isso há 7 anos, não teria jogado fora quando fiz minha última instalação limpa do SO.
de Bruno Bronosky
Sweeet! Uma coisa que estou perdendo usando isso é a linha que separa a sessão dividida
Julio Marins
1
@trusktr Observe guifge guibgé a favor gvim. Se você estiver executando vimem um terminal, tente ctermfge, em ctermbgvez disso. Você também precisará de cores diferentes, os números 1-16 ou 1-256, dependendo de quantas cores você ativou no vim. Cores correspondentes para cada número.
Joelostblom
46

Este é o que eu uso:

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.

Destaque em? função:

function! HighlightSearch()
  if &hls
    return 'H'
  else
    return ''
  endif
endfunction

Cores (adaptado de 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

My StatusLine

Reman
fonte
2
Bom, isso evita a necessidade de ter os plugins linha de status fantasia atleast para o meu caso de uso, colírio para os olhos :)
Nishant
1
Como você faz as cores funcionarem?
trusktr
Tentei colocar isso depois que qualquer um colorschemefoi definido, mas vejo apenas uma linha de status de tom duplo.
trusktr
@trusktr, Não é fácil de explicar .... Você precisa colocar os 2 primeiros blocos no arquivo vimrc e o bloco de cores no arquivo de esquema de cores atual. Você pode encontrar seu arquivo de esquema de cores atual com este comando::colorscheme
Reman
1
Sua busca destaque seria mais curto (sem função) apenas usando operador ternário como este -> echo &hls ? 'H' : '' no meu caso:let &stl.="%6*%01(%{&hls?'H':''}%)%0* "
SergioAraujo
20

O que eu encontrei útil é saber qual copiar / colar tampão (registo) é atualmente ativo: %{v:register}. Caso contrário, minha linha de status completa se parece quase exatamente com a linha padrão.

:set statusline=%<%f\ %h%m%r\ %y%=%{v:register}\ %-14.(%l,%c%V%)\ %P
DarkDust
fonte
2
Meu, isso v:registerparece muito útil mesmo!
N26325681
O que significa um registro estar ativo? Minha (má) compreensão dos registros é que eles eram basicamente pranchetas para armazenar texto.
Roymunson 12/07/19
15

Algumas vezes menos é mais, você realmente precisa saber a porcentagem do arquivo que está ao codificar? E o tipo de arquivo?

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()}       

statusline

statusline

Também prefiro cores mínimas para não distrair do código.

Retirado de: https://github.com/krisleech/vimfiles

Nota: rvm#statuslineé específico do Ruby e fugitive#statuslineespecífico do git.

Kris
fonte
1
+1 para statusline relacionado ao git
Patrick
3

Atualmente, uso essas configurações da barra de status:

set laststatus=2
set statusline=\ %f%m%r%h%w\ %=%({%{&ff}\|%{(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\")}%k\|%Y}%)\ %([%l,%v][%p%%]\ %)

Meu arquivo .vimrc completo: http://gabriev82.altervista.org/projects/vim-configuration/

gabriev82
fonte
1

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

Isso é meu, dê como sugestão

winterTTr
fonte