Visualizza il nome del file corrente in vim?


157

Come visualizzi il nome del file su cui stai lavorando in vim?


1
Se il tuo terminale è impostato correttamente, dovresti ottenere il nome file nel titolo della finestra.
Cascabel,



2
ctrl + g è in grado di mostrare le informazioni sul file
Dhiren Hamal

Risposte:


200

:f( :file) farà lo stesso di <C-G>. :f!fornirà una versione non troncata, se applicabile.


2
Bello, ma è possibile mostrarlo nella barra superiore del terminale? (o terminatore) o da qualche parte senza digitare un comando.
eMarine,

21
:f!non funziona sempre, premi 1, quindi Ctrl-G per il percorso completo.
Vive il

1
Che ne dici di un percorso completo? Quando avvio vim da ~/dev/file.pyed eseguo :fall'interno di vim, ottengo file.pycome output anziché ~/dev/file.py.
gxyd,

1
@ives cosa significano separatamente 1 e Ctrl + g?
Jobima,

2
@jobima: modifica ctrl-gper restituire path + file. :frestituirà il nome file senza percorso, come potrebbe ctrl-g. Un 1prima ctrl-gmostrerà il percorso e il nome (non necessariamente espansi però). cioè mostrerà ~/dev/file.pyinvece di file.py. 2seguita da ctrl-gcomprenderanno che buffer: buf 1: "~/dev/file.py".
vive l'

71

ctrl+ glo farà.

Inoltre, mi piace avere:

set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"

Che produce:

foo.c [C] [0x23] <code / foo.c 1, 1 2% su 50

Inoltre, come qualcuno ha menzionato (ma ora eliminato) %verrà sostituito con il nome file corrente. Per esempio:

:! echo "file corrente:%"
file corrente: foo.c
Premere INVIO o digitare il comando per continuare

2
Cosa significano le parti [C]e [0x23]?
LangeHaare,

@LangeHaare Tipo di file e valore esadecimale del carattere sotto il cursore rispettivamente

'statusline'è una stringa, ma non includi le virgolette nel set: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesnecessita anche di spazi di escape
D. Ben Knoble

18

imposta la riga di stato. maggiori informazioni con:help statusline

Questi comandi possono andare nel tuo file .vimrc, oppure puoi inserirli come comandi mentre sei in vim digitando ':' in modalità comando.

Innanzitutto, imposta l'ultimo stato su 2 utilizzando quanto segue:

set laststatus=2

Quindi impostare la riga di stato su% f per il nome file breve.

set statusline=%f

Per il percorso completo del file, utilizzare% F.


E518: Opzione sconosciuta:% f
Isius,

Ho aggiornato la risposta, Isius. Spero che questo lo renda più chiaro.
Brian Clements,

5

:set title per visualizzare il nome del file nella barra del titolo della finestra.


5

Perché così complicato? Control-G farà il lavoro


4

Per mostrare il percorso completo di qualsiasi file, inclusi i collegamenti simbolici risolti, utilizzare quanto segue.

:echo resolve(expand('%:p'))

Questo può essere aggiunto alla barra di stato aggiungendo la riga in basso alla tua ~./vimrc

set statusline +=%{resolve(expand('%:p'))}\ %*

2

Uno dei suggerimenti di cui sopra ha dovuto essere modificato in

set statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ lines

per farlo funzionare. Anche

set laststatus=2

era usato.


Benvenuto in Stack Overflow ! Probabilmente dovrebbe essere una modifica o un commento suggerito sulle risposte pertinenti: non hai ancora abbastanza reputazione per commentare o modificare, ma presto lo farai se fai buone domande e scrivi buone risposte! Nel frattempo, suggerirò le correzioni pertinenti agli autori delle risposte. Buona pesca!
D. Ben Knoble,

1

Uso l'incredibile vimrcdi amix: https://github.com/amix/vimrc

Utilizza il lightline.vimplug-in e visualizza il nome file sulla barra di stato.

La cosa grandiosa dell'uso di questo amix/vimrcè che questo plugin si occupa della maggior parte della personalizzazione, è molto stabile ed è stato testato da migliaia di persone, come puoi verificare guardando il numero di stelle github .. e i problemi rari.

Inoltre è aggiornato abbastanza frequentemente.

PS: non l'autore di nessuno dei plugin .. solo un fan :)


1

Ho anche dovuto metterlo nel mio file .vimrc:

set noruler
set laststatus=2

Quindi potrei inserire qualcosa di simile set statusline="%f%m%r%h%w [%Y] [0x%02.2B]%< %F%=%4v,%4l %3p%% of %L"nel mio file .vimrc e dopo aver riavviato il mio terminale la linea di stato viene visualizzata correttamente.


'statusline'è una stringa, ma non includi le virgolette nel set: set statuslineset statusline=%f%m%r%h%w\ [%Y]\ [0x%02.2B]%<\ %F%4v,%4l\ %3p%%\ of\ %L\ linesnecessita anche di spazi di escape
D. Ben Knoble
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.