Una statusline più utile in vim? [chiuso]


150

Mi piacerebbe rendere il mio statusline in vim più informativo e interessante, e per questo ho bisogno di alcune idee. Come hai personalizzato la tua statusline?


5
@paxdiablo: a volte vale la pena dedicare del tempo a configurare lo strumento in base alle proprie esigenze, in modo da poterne utilizzare meglio e risparmiare tempo durante il lavoro.
DarkDust,

10
Questo dovrebbe essere un wiki della comunità in quanto non esiste una risposta corretta.
Randy Morris,

3
Non si tratta di opinioni, ma di sfruttare l'esperienza e la competenza di individui più colti. Interrogatore è alla ricerca di informazioni che non può indovinare, non chiede agli individui di competere su ciò che è meglio. Le risposte genereranno una serie di opzioni che prima non aveva. Solo perché una domanda ha più di una risposta non significa che non sia una domanda basata sull'esperienza tecnica. Questa domanda si adatta bene al formato SO e dovrebbe rimanere aperta.
NeilG

Risposte:


134

Modificare:-

Nota vim-Airline sta guadagnando un po 'di trazione con la nuova opzione vimscript in quanto Powerline è diventato Python.


Sembra powerline è dove si trova in questi giorni: -

Riga di stato normale

powerline

Linee di stato personalizzate per altri plug-in (ad es. Ctrlp )

powerline


3
@Gavin come posso cambiare i tuoi segmenti di linea elettrica? potresti aggiornare alcuni script di modifica dei segmenti predefiniti? salute
Jerry Gao

@Gavin Anche io apprezzerei se tu potessi condividere come hai incluso cose come la tua filiale in vim-powerline
Eric Hu

1
Niente di speciale, da: github.com/Lokaltog/vim-powerline#tro risoluzione dei problemi, assicurati di avere "let g: Powerline_symbols = 'fancy'" nel tuo file vimrc e di aver installato i font corretti.
Gavin Gilmour,

questo è un bel plugin. Ma la mia prestazione di scorrimento quando apro un file per la prima volta è molto brutta per questo.
Ahmed Aeon Axan,

2
@AhmedAeonAxan prova la compagnia aerea, inizia velocemente (vimscript puro). E richiede meno sforzo per l'installazione, in particolare con Vundle o Pathogen. E una volta installato il font powerline, più o meno sembra una compagnia aerea. github.com/Lokaltog/powerline-fonts
snowbound

60

Ecco il mio:

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

statusline vim

Ed ecco i colori che ho usato:

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 è in realtà il conteggio dei byte, anche se a volte viene chiamato conteggio delle colonne anche in vim help. È possibile utilizzare v per ottenere ciò che di solito si intende per numero di colonna.
Ludwig Weinzierl,

Grazie @ Ludwig, non me ne sono accorto. Modificherò la risposta.
Tassos,

8
Adoro la chiarezza nel commentare ogni valore aggiunto sulla propria riga. Se lo avessi fatto 7 anni fa, non l'avrei buttato fuori quando ho fatto la mia ultima installazione pulita del sistema operativo.
Bruno Bronosky,

Sweeet! Una cosa che mi manca usando questa è la linea che separa la sessione divisa
Julio Marins,

1
@trusktr Nota che guifge guibgsono per gvim. Se si esegue vimin un terminale, provare ctermfge ctermbginvece. Avrai anche bisogno di colori diversi, i numeri 1-16 o 1-256 a seconda di quanti colori hai abilitato in vim. Colori corrispondenti per ogni numero.
Joelostblom,

46

Questo è quello che 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.

Evidenziare? funzione:

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

Colori (adattato da 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


2
Bello, questo evita la necessità di avere almeno i plug-in della status line per il mio caso d'uso, eye candy :)
Nishant,

1
Come si fa a far funzionare i colori?
trusktr,

Ho provato a metterlo dopo che è colorschemestato impostato uno qualsiasi , ma vedo solo una linea di stato a doppio tono.
trusktr,

@trusktr, Non è facile da spiegare .... Hai bisogno di mettere i primi 2 blocchi nel tuo file vimrc e il blocco di colori nel tuo attuale file di colori. Puoi trovare il tuo attuale file di colori con questo comando::colorscheme
Reman,

1
La tua ricerca in evidenza sarebbe più breve (senza alcuna funzione) semplicemente usando un operatore ternario come questo -> echo &hls ? 'H' : '' nel mio caso:let &stl.="%6*%01(%{&hls?'H':''}%)%0* "
SergioAraujo,

20

Quello che ho trovato utile è quello di sapere quale copia / incolla del buffer (registro) è attualmente attiva: %{v:register}. Altrimenti, la mia linea di stato completa sembra quasi esattamente come la linea standard.

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

2
Mio, v:registersembra davvero molto utile!
nperson325681

Cosa significa che un registro è attivo? La mia (cattiva) comprensione dei registri è che si trattava essenzialmente di appunti per memorizzare il testo.
Roymunson,

15

Alcune volte di meno è di più, hai davvero bisogno di sapere la percentuale attraverso il file che sei durante la codifica? E il tipo di file?

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

Preferisco anche il colore minimo per non distrarre dal codice.

Tratto da: https://github.com/krisleech/vimfiles

Nota: rvm#statuslineè specifico per Ruby ed fugitive#statuslineè specifico per git.


1
+1 per statusline relativo a git
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

Questo è mio, dare come suggerimento

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.