Come posso correggere i simboli della barra di stato nel plugin Airline?


64

Ho installato il plugin Airline per avere una barra di stato personalizzata, come mostrato nella figura seguente:

Inserisci qui la descrizione dell'immagine

Tuttavia, la mia barra di stato presenta i simboli <, >>e <. Come posso risolvere questo problema?

Inserisci qui la descrizione dell'immagine

Inserisci qui la descrizione dell'immagine

Inserisci qui la descrizione dell'immagine


Usa everythingfonts.com/otf-to-ttf per convertire i caratteri in ttf, Esempio: le versioni precedenti di XShell non supportano otf.
Bhathiya-Perera,

Per la massima compatibilità, lascio airline_powerline_fontsperdere. Non penso che siano davvero così utili.
qwr

Risposte:


50

In realtà non capisco perché la tua domanda sia stata respinta. Onestamente all'inizio anche io non ho capito cosa bisogna fare per ottenere questa bella barra degli strumenti. Sì, conosco il file README e altre cose, ma penso che ci dovrebbe essere una getting startedo una minimum settingssezione nel file della guida.

Comunque qui ci sono le impostazioni.

Installazione dei caratteri appropriati

Devi installare font nel tuo sistema con simboli come branching, triangoli grandi ecc. Non sono simboli standard, quindi devi installare un font patchato. Puoi trovare molti caratteri corretti qui: https://github.com/powerline/fonts .

.vimrc impostazioni

Da :help airline-customization, inserisci questo codice nel tuo file .vimrc:

" air-line
let g:airline_powerline_fonts = 1

if !exists('g:airline_symbols')
    let g:airline_symbols = {}
endif

" unicode symbols
let g:airline_left_sep = '»'
let g:airline_left_sep = '▶'
let g:airline_right_sep = '«'
let g:airline_right_sep = '◀'
let g:airline_symbols.linenr = '␊'
let g:airline_symbols.linenr = '␤'
let g:airline_symbols.linenr = '¶'
let g:airline_symbols.branch = '⎇'
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.paste = 'Þ'
let g:airline_symbols.paste = '∥'
let g:airline_symbols.whitespace = 'Ξ'

" airline symbols
let g:airline_left_sep = ''
let g:airline_left_alt_sep = ''
let g:airline_right_sep = ''
let g:airline_right_alt_sep = ''
let g:airline_symbols.branch = ''
let g:airline_symbols.readonly = ''
let g:airline_symbols.linenr = ''

La unicode symbolssezione non è necessaria qui se si dispone già di un carattere con patch, ma ti offre un buon fallback se si tenta di utilizzare un altro carattere che non ha i simboli appropriati.

Impostazioni dei caratteri

Se usi Vim nel terminale, dovresti passare al carattere appropriato nelle preferenze del profilo del tuo terminale.

Se si utilizza la versione GUI di Vim (MacVim, GVim) è necessario impostare il tipo di carattere in .vimrc, per esempio: set guifont=DejaVu\ Sans:s12. Puoi trovare maggiori informazioni qui :help guifont.


Ciao Alexander. Ho seguito le sue istruzioni, ma non riesco ancora ad ottenere il risultato atteso: inizialmente ho installato i caratteri dal sito della powerline. Quindi ho effettuato le impostazioni nel file .vimrc. Il mio file .vimrc è stato condiviso in gist.github.com/geisonsn/641f13543b8b41fe2c12 . Sto usando il plug-in Vundle Manager.
Geison Santos,

Hai installato quel carattere nel tuo editor? Se si usa vim nel terminale è necessario installare quel font nel terminale, o se si utilizza gui-versione di vim (MacVim, GVim) è necessario impostare font nella .vimrc-file, per esempio: set guifont=DejaVu\ Sans:s12. Maggiori informazioni puoi trovare qui :help guifont.
Alexander Myshov,

2
@AlexanderMyshov hai ripetute linee di configurazione, dove è richiesto solo il secondo su ogni due.
Vitor,

1
Ho appena creato un account qui su vi.stackexchange per ringraziarti e migliorare questa tua meravigliosa risposta. Grazie per avermi sollevato migliaia di ricerche.
decimale0

1
Penso che dovrebbe esserci una sezione iniziale o impostazioni minime ... Non so se verrà eliminata o meno, ma ho aggiunto una Guida Dummies al wiki di vim-compagnia aerea in base alla mia risposta .
icc97,

12

Dal README :

Integrazione con i caratteri powerline

Affinché appaiano i simpatici simboli powerline, dovrai installare un font con patch. Le istruzioni sono disponibili nella documentazione ufficiale su powerline . I caratteri preconfezionati sono disponibili nel repository di caratteri powerline .

Infine, puoi aggiungere la variabile di convenienza let g:airline_powerline_fonts = 1al tuo vimrc che popolerà automaticamente il g:airline_symbolsdizionario con i simboli powerline.


1
Ho scoperto che let g:airline_powerline_fonts = 1non era abbastanza. Per qualche motivo, questo non ha ancora popolato automaticamente il g:airline_symbols, quindi ho dovuto popolare manualmente il dizionario secondo la risposta di Alexander Myshov .
icc97,

5

Ci sono volute ore per capire, quindi ecco di più di una guida per manichini per Fedora / Ubuntu, con una sezione speciale per Windows.

Il primo è capire quali diavolo sono quelle strane ma belle parentesi angolari che compaiono nella barra di stato della compagnia aerea VIM. Lo sfondo è che la compagnia aerea è una versione vim pura di powerline (che era pitone) e powerline usa caratteri UTF-8 per inserire quelle parentesi angolari. Quindi vim-Airline utilizza solo gli stessi caratteri UTF-8.

Quindi, anche se riesci a installarne uno, sembrano più brutti di quanto tu possa sperare perché i caratteri non funzionano completamente.

Configurare Vim

Questo è contrario alle istruzioni ufficiali, ma alla fine ho avuto un po 'di errore che mi ha fatto mettere in discussione tutte le installazioni di font. Quindi ti suggerisco di configurarlo prima e poi se i font funzionano, dovrebbe apparire magicamente.

L'ultimo trucco è stato costringere Vim-Airline a utilizzare i caratteri di cui ha bisogno. Nella documentazione ufficiale dovrebbe solo essere aggiunto let g:airline_powerline_fonts = 1nel tuo .vimrc. Comunque l'ho fatto e senza fortuna. Ci sono più informazioni in :help airline-customizatione che ti danno alcune semplici impostazioni di configurazione di cui hai bisogno, per ogni evenienza. Questa era l'ultima salsa magica di cui avevo bisogno. Non so perché questo non sia stato creato automaticamente. Copia e incolla le impostazioni menzionate nella risposta accettata di Alexander Myshov qui .

Cucina che affonda su Fedora e Ubuntu

Questa è probabilmente una soluzione eccessiva, ma prima devi farlo funzionare in modo coerente prima di poterlo semplificare.

  1. Installa il font powerline generale sudo dnf install powerline-fonts(o sudo apt install fonts-powerline) - questo dovrebbe significare che puoi usare qualsiasi font che hai già installato. Se non hai un modo semplice per installare come dnf / apt, allora ci sono istruzioni per farlo manualmente, ad es. Https://www.tecmint.com/powerline-adds-powerful-statuslines-and-prompts-to-vim-and -bash / , anche la documentazione ufficiale contiene istruzioni ( https://powerline.readthedocs.io/en/latest/installation/linux.html#fonts-installation ).

    Ora chiudi nuovamente il terminale e verifica che il carattere dei simboli Powerline sia disponibile se modifichi le preferenze del terminale e imposti un carattere personalizzato. Non vuoi usare il carattere direttamente, controlla solo che sia disponibile . Ora prova ad aprire Vim e vedi se hai dei bei simboli.

  2. Se il carattere generale powerline non ha funzionato o se stai cercando di migliorare le cose, puoi provare a installare singoli caratteri 'patchati', ci è voluto un po 'di tempo per capire, ma puoi letteralmente andare nella cartella che vuoi in https: //github.com/powerline/fonts/ e scaricarlo, il font che mi è piaciuto di più dai miei test è il font con patch di Source Code Pro . Quindi basta aprire il file del font scaricato e fare clic su "Installa".

    Se preferisci la riga di comando, puoi installare tutti i caratteri corretti :

     $ git clone https://github.com/powerline/fonts.git --depth=1
     $ fonts/install.sh
     $ rm -rf fonts
    

    Ciò installerà tutti i caratteri mono corretti, ma ciò ti darà la possibilità di esplorare i possibili caratteri. L'elenco dei caratteri che installa è un fantastico elenco dei caratteri del codice sorgente disponibili. Significa anche che non devi preoccuparti di installare ciascuno dei singoli caratteri che vengono inclusi.

  3. Verifica che il carattere possa essere specificato nelle preferenze del terminale, riapri la sessione del terminale se mancano i caratteri, quindi nota che potrebbero esserci due opzioni qui:
    1. Il carattere generale powerline funziona nel qual caso puoi semplicemente usare il carattere base ad es. DejaVu Sans Mono
    2. Se non riesci a farlo funzionare, il font corretto che hai scaricato sopra dovrebbe essere corretto, ad esempio l'equivalente di DejaVu è "DejaVu Sans Mono per Powerline".

Ottimizzare Linux

Una volta che l'ho fatto funzionare per la prima volta, è stato davvero deludente in quanto le icone non combaciavano perfettamente. Ma come da FAQ dobbiamo fare alcune modifiche. Ho iniziato con Inconsolata in quanto questo mi dà un carattere coerente su Windows e Linux. Puoi installare facilmente il carattere generale su Ubuntu con apt install fonts-inconsolataEcco cosa ho ottenuto:

inserisci qui la descrizione dell'immagine

Le frecce sono troppo grandi e vengono spostate in modo brutto.

Quindi ho provato tutti gli altri caratteri Ubuntu predefiniti.

Ubuntu mono:

inserisci qui la descrizione dell'immagine

DejaVu Sans Mono:

inserisci qui la descrizione dell'immagine

Questo ha la posizione verticale corretta ma le frecce sul lato destro hanno uno spazio dietro di loro.

Perché usi i caratteri corretti

L'utilizzo dei caratteri predefiniti si basa sul carattere Powerline per correggere automaticamente i caratteri esistenti. Tuttavia, puoi migliorare l'aspetto dei simboli della compagnia aerea usando i caratteri corretti. Questi sono gli equivalenti usando i caratteri patchati.

Li visualizzo tutti alla dimensione del carattere 16 poiché mi piace usare un carattere più grande, inoltre mostra problemi minori.

Inconsolata per Powerline:

inserisci qui la descrizione dell'immagine

Questo ha ancora problemi, ma sono quasi tutti risolti dalla variazione dz.

Inconsolata-dz per Powerline dz:

inserisci qui la descrizione dell'immagine

Questo ha una frattura dell'attaccatura sulle frecce del lato destro, ma è comunque perfetta.

Derivata Ubuntu Mono Powerline Regular:

inserisci qui la descrizione dell'immagine

Questo ha ancora problemi fastidiosi.

DejaVu Sans Mono per Powerline Book:

inserisci qui la descrizione dell'immagine

Questo ha una frattura dell'attaccatura sulle frecce del lato destro, ma è comunque perfetta. In realtà lo preferisco all'Inconsolata-dz poiché l'icona LN è più leggibile.

Oltre a questi clienti abituali, ho provato quasi tutti i caratteri disponibili e il mio altro preferito era Source Code Pro.

Codice sorgente Pro per supporto Powerline

inserisci qui la descrizione dell'immagine

Ciò ha problemi alla dimensione 16 in cui le frecce sono troppo grandi, ma alla dimensione 14 è quasi impercettibile. Le icone branch e LN traboccano verso il basso, ma in qualche modo questo non mi infastidisce.

Codice sorgente Pro per Powerline Light

inserisci qui la descrizione dell'immagine

Questo risolve quasi completamente i problemi delle dimensioni della freccia del carattere medio e lo rende perfetto, anche se c'è ancora il trabocco dell'icona.

Codice sorgente Pro

Quando stavo studiando le opzioni per i caratteri, ci sono un paio di cose che noti, alcune patch di caratteri hanno il minimo assoluto nei dettagli, se lo confronti con l'elenco di codice sorgente Pro è abbastanza significativo. Source Code Pro è un font molto dettagliato e completo che è stato considerato funzionare in una vasta gamma di scenari. Questo tipo di completezza è importante per i casi limite.

Utilizzato come font rattoppato, mostra quasi perfettamente la barra della compagnia aerea vim. Il vantaggio di così tante alternative è l'uso del font leggero che ha una visualizzazione ancora migliore della barra della compagnia aerea vim.

Source Code Pro è anche in continuo sviluppo aperto sul repository Github di Adobe .

Gestire il delicato fiore di Windows (supponendo GVim)

Il font Powerline non funziona con Windows, quindi l'unica scelta è quella di utilizzare un font con patch. Anche lo script bash per installare tutti i caratteri non funziona, quindi devi fare lo stesso git clonema poi vai in ciascuna delle singole directory e installa i caratteri che desideri.

Ho scaricato tutti i font corretti di Source Code Pro e li ho installati. Anche se li installi come singoli caratteri, vengono aggiunti a Windows come un singolo carattere "Codice sorgente Pro per Powerline" con un attributo separato per specificare il peso.

Quindi (supponendo che GVim ) aggiunga questo al tuo .vimrc:

set guifont=Source\ Code\ Pro\ for\ Powerline:h15:cANSI

Se vuoi usare il carattere 'Light' usa questo.

set guifont=Source_Code_Pro_Light:h15:cANSI

Non ha molto senso in quanto non è necessario includere 'for Powerline', ma è così che funziona (l'ho capito impostando il carattere in GVim e quindi usando set guifont?per controllare quale GVim ha usato). Inoltre ho notato che quando usi GVim per cambiare il carattere, il rendering del carattere non è molto buono. Inizialmente ho scartato il font Light perché quando sono passato dal menu GVim è stato visualizzato male, ma se metti il ​​sotto nel tuo .vimrce riavvii GVim dovrebbe apparire adorabile.

Inoltre, è possibile impostare il prompt di DOS / Powershell sullo stesso carattere. Quindi con il font con patch è anche possibile far funzionare Powerline in Vim normale all'interno di DOS.

Se non mi credi, qui funziona su Vim in Powershell:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


3

Ho avuto lo stesso problema dopo aver reinstallato Vim: i miei vecchi caratteri corretti non erano compatibili con i nuovi simboli della compagnia aerea.

I vecchi simboli sono anche menzionati nella guida ( :help airline-customization):

" old vim-powerline symbols
let g:airline_left_sep = '⮀'
let g:airline_left_alt_sep = '⮁'
let g:airline_right_sep = '⮂'
let g:airline_right_alt_sep = '⮃'
let g:airline_symbols.branch = '⭠'
let g:airline_symbols.readonly = '⭤'
let g:airline_symbols.linenr = '⭡'

Dopo aver inserito queste righe nel mio vimrc è andato tutto bene.


upvoted! attualmente il migliore per me, solo questi simboli sono un po 'più alti
Ryenus

1
Devi prima definire il dizionario: let g: airline_symbols = {}
PerseP
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.