Come posso visualizzare in modo permanente il percorso del file corrente in Vim?


90

So che CTRLgvisualizza il file corrente su cui stai lavorando. C'è un modo per modificare il mio in modo .vimrctale che il nome del file / percorso sia sempre visualizzato?

Risposte:


128

Nella tua statusline, aggiungi un %Fper visualizzare il percorso completo:

:help statusline

" Add full file path to your existing statusline
set statusline+=%F

Nota, %Fsarà il percorso completo. Per ottenere un percorso relativo alla directory di lavoro, utilizzare %f.

Se la tua statusline non è già visibile, potrebbe essere necessario prima configurarla in modo che sia sempre visibile, tramite laststatus=2

set laststatus=2

Guarda :help laststatuscosa significano le opzioni. Normalmente, la riga di stato può essere nascosta o nascosta a meno che non siano aperti più buffer, ma trovo estremamente utile avere tutto il tempo con personalizzazioni come questa, vale la pena rinunciare a una riserva di riga dello schermo per questo.


1
Certamente preferisco la tua risposta alla mia, ma aggiungere set statusline+=%Falla mia ~/.vimrcnon sembra fare quello che dici. Anche se i docs sembrano certamente essere d'accordo con te ...
Tim Pote

1
Questo non ha avuto effetto. Mi scuso se mi manca qualcosa di semplice, hai qualche idea in merito?
zallarak

1
@TimPote Quale versione di vim? Per me va bene. Forse la tua statusline lo sta già spingendo fuori o limitando la larghezza. Prova solo :set statusline=%Fsenza il+
Michael Berkowski

@zallarak Vedi il mio commento a Tim. La tua statusline cambia se lo fai semplicemente :set statusline=%F? Guarda a destra oa sinistra per vedere se il nome del file si nasconde laggiù nella statusline
Michael Berkowski

2
@TimPote Forse set laststatus=2per mantenere la statusline sempre visibile. Ho dimenticato di averlo addosso.
Michael Berkowski

20

impostare ls = 2

aggiungilo in vimrc e vedrai sempre il nome del file in fondo.


set modeline non ha fatto niente per me, cosa dovrebbe fare? (set ls = 2 ha fatto qualcosa però). Come faccio / aiuto a capirlo da solo la prossima volta? Grazie! :)
Charlie Parker

1
set modelineè un po 'pericoloso e non ha nulla a che fare con la domanda. Permette l'esecuzione di comandi Vim nelle 5 righe di inizio / fine di un file. Dovrebbe essere attivato solo da chi sa perché e lo desidera davvero. (Ecco perché ho -1 questa risposta)
Dr Beco

16

Ho trovato 2 modi per visualizzare il percorso del file nella barra del titolo di gnome-terminal durante la modifica di un file con Vim.

Il modo più semplice (e migliore): aggiungi la seguente riga a ~/.vimrc:

set title

Che ti mostrerà in alto:

filename.ext (~/path_to_directory_where_your_file_is/) - VIM

Il modo più complicato ti mostrerà il percorso del file assoluto. È documentato un po 'più in dettaglio in questo post sul blog che ho scritto di recente.


Il "set title" mostrerà il nome del file nella scheda del terminale. Caratteristica interessante.
duleshi

Interessante com'è, non risponde alla domanda posta. Inoltre asserisci che è meglio, ma potrebbe non esserlo. Ad esempio, se il tuo vim è aperto nel terminale che è in modalità a schermo intero, il titolo non è visibile. Quindi downvote.
apprendistaDev

8

L'unico modo che ho trovato per ottenere il percorso completo del file sto lavorando in è: :echo expand('%:p'). Puoi mappare nuovamente ctrl + g se vuoi, ma personalmente non mi piace allontanarti troppo dagli standard. Ho mappato F7 in questo modo:

map  <F7> <Esc>:echo expand('%:p')<Return>

4
:help CTRL-Ge guarda due paragrafi verso il basso CTRL-Gcon conteggio.
Stefan Majewsky

1
Grazie, @StefanMajewsky. 1 CTRL-Gmostra il nome completo del file. Stavo cercando questa opzione.
Anton Kiselev,

Ti amo Tim, questo è l'unico modo per mostrare in modo assoluto il percorso assoluto, anche senza ~.
ryancheung

7

Se stai usando vim-airlines , inserisci .vimrc:

let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'

Questa è una modifica dell'impostazione predefinita della compagnia aerea, cambiando %fda %F.


6

L'ho sempre usato :f, ma la risposta ei link di @MichaelBerkowski sono fantastici!

:f mostra il percorso, il conteggio delle righe, lo stato modificato, la posizione corrente del cursore e altro ...

Non lo sapevo, CTRLGma sembra essere più o meno lo stesso.


5

La statusline è molto potente e pratica credo. Appena fuori dalla scatola mostrerà il nome del file, la posizione del cursore e alcune bandiere. Ma vuoi fare lo stesso di me e sostituire il nome del file -part con il percorso completo del file.

Quindi durante la modifica della mia .vimrcriga di stato potrebbe apparire qualcosa di simile come predefinito:

.vimrc                                                        26,16           7%

È possibile visualizzare le impostazioni della riga di stato con:

:set statusline?

Ma se non hai apportato modifiche e nessun modulo è stato modificato, sarebbe vuoto. Ma dagli esempi nella sezione della guida ( :help statusline) potresti scoprire che l'impostazione predefinita è:

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

Quindi includi questo nel tuo .vimrce cambia %fin %F. Ho anche aggiunto il flag filetype ( %y) alla mia statusline poiché lo trovo conveniente. Quindi la mia configurazione risultante è simile a questa:

:set statusline=%<%F\ %h%m%r%y%=%-14.(%l,%c%V%)\ %P

E il risultato sarebbe simile a questo:

~/.vimrc [vim]                                                26,16           7%

Buona lettura:

PS. Eseguo vim 7.3


4

Se desideri che il percorso includa collegamenti simbolici risolti, utilizza quanto segue:

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

Per mantenere l'abbreviazione "~" della directory home, includi fnamemodify

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

Entrambi hanno funzionato per me in VIM 7.4 usando iTerm2 su SSH in Ubuntu 16.04 LTS
James Nicholson
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.