Come scoprire quale file è attualmente aperto in vim?


61

Questo può sembrare banale ma, in più di un'occasione, mi sono ritrovato a dimenticarmi di quale file vimho aperto (ad esempio quando cerco diversi file di registro e simili) e l'unico modo che ho saputo scoprire è stato chiudere il file e cerca nella cronologia dei comandi il comando più recente.

Esiste un comando all'interno di vim per dirti quale file hai attualmente aperto senza uscire dal programma o dal file che hai aperto (ad esempio :<which_file_cmd>?)


5
Se non hai chiamato vimcon così tanti argomenti, usa :args.
41754,

Risposte:


76

Oltre alla risposta di uprego , è possibile premere Ctrl+ G(in modalità normale) per ottenere il nome del buffer corrente, nonché il numero totale di righe in esso e la posizione corrente al suo interno.

Aggiornare

Come da commento di rxdazn , puoi premere 1prima di Ctrl+ Gper ottenere il percorso completo del file. Se si preme 2, si ottiene il percorso completo del file e il numero di buffer attualmente aperto (utile quando sono stati aperti più file con vim).


Come molti comandi di vim, questo vale anche per il lesscomando che uso quando visualizzo i file invece di modificarli.
jmathew,

18
inoltre, premendo 1 prima di Ctrl + G si ottiene il percorso completo del file
rxdazn,

23

Quando dentro vimuso sempre il :lscomando.

Esempio

:ls
  1 %a   "blah.txt"                         line 1

Dov'è blah.txtil nome del file.



7

Quando vimnon viene chiamato con molti argomenti, :argsè utile.


4
L'altro problema è che se il file è stato aperto dopo l'avvio di vim, non verrà elencato.
Patrick,

4

Se puoi avere un file di configurazione di vim predefinito, puoi aggiungere un statuslineper avere sempre i dettagli del file disponibili. Capisco che se stai costantemente remotando su server diversi questo non sarà di grande aiuto. Ecco il mio leggermente complesso estratto dal mio .vimrc.

" %F(Full file path)
" %m(Shows + if modified - if not modifiable)
" %r(Shows RO if readonly)
" %<(Truncate here if necessary)
" \ (Separator)
" %=(Right align)
" %l(Line number)
" %v(Column number)
" %L(Total number of lines)
" %p(How far in file we are percentage wise)
" %%(Percent sign)
set statusline=%F%m%r%<\ %=%l,%v\ [%L]\ %p%%

" Change the highlighting so it stands out
hi statusline ctermbg=white ctermfg=black

" Make sure it always shows
set laststatus=2

E sembra così in MacVim (ma funziona anche nei terminali). inserisci qui la descrizione dell'immagine

Come sempre puoi fare :help statuslineper ottenere altre opzioni e dettagli. E dai un'occhiata a Learning Vim the Hard Way ch 17 per una buona spiegazione dello statusline.


Uso sempre anche statusline. +1
Rob,

1

C'è anche :echo @%, che ti dà il nome del file relativo alla directory corrente.


1

Ci sono innumerevoli modi per ottenere questo tipo di informazioni, ma se vuoi qualcosa in modo da dover solo premere un tasto e verrà visualizzato il nome del file, inserisci quanto segue nel tuo ~/.vimrc:

map <F4> <ESC>:file<CR>

Questo dice:

bind the `F4' key to the following sequence: Escape-key, :file, Carriage-Return (enter-key)

E il filecomando, come è probabilmente evidente, restituisce il nome del file corrente insieme ad altre informazioni.

Potresti anche impostare una linea di stato in modo da non dover fare altro che guardare.

Per mantenere la riga di stato, inserisci sempre quanto segue nel tuo ~/.vimrc:

set laststatus=2

Questo dice a ViM di mostrare sempre una linea di stato, altre opzioni sono 0, per sempre, e 1solo quando due o più finestre sono aperte in ViM.


1

Di solito scrivo :e e questo mi mostra il percorso completo del file e anche il numero di righe e caratteri.

Avvertenza : riapre essenzialmente il file dal disco, quindi è molto utile quando il file è già salvato.

:help :e dice:

                          *:e* *:edit*
Edit the current file.  This is useful to re-edit the
current file, when it has been changed outside of Vim.
This fails when changes have been made to the current
buffer and 'autowriteall' isn't set or the file can't
be written.

1

Io il mio vimrc ho questa mappatura

nnoremap <leader>pfn :echo expand('%:p')<CR>

Quindi, se digito ,pfn, o "nome file di stampa", echo l'intero percorso del file.

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.