Cronologia dei file recenti in Vim?


132

Vorrei accedere ai file recenti che avevo aperto e quindi chiuso in GVim. Apro e chiudo frequentemente GVim. Vorrei accedere anche ai file recenti delle sessioni precedenti.

GVim memorizza i file recenti da qualche parte come Word e molte altre app desktop archiviate? Come accedervi?


Risposte:


229

Almeno Terminal VIM memorizza i dieci file precedenti ~/.viminfonella sezione segni di file . È possibile utilizzare '0, '1, '2, ... '9a saltare in mezzo a loro.

(Probabilmente utile solo per '0tornare all'ultimo file che stavi modificando, a meno che la tua memoria non sia più forte della mia.)

Puoi anche usare il :browse oldfilescomando per ottenere un menu con numeri.


2
Se si desidera utilizzare 0- 9come contrassegni per la navigazione, non contrassegnarli manualmente
yuan

16
usa :browse oldget file-list. e inserisci qper scegliere quale file modificare.
Songhir,

5
:e #<1apre l'ultimo file, vedi :h c_#<.
Hotschke,

: bro ol funziona .. ma è necessario digitare molti tasti .. prima per ottenere un elenco di file, quindi premere q, quindi selezionare un numero. Credo che il plugin MRU menzionato di seguito sia molto meglio: stackoverflow.com/a/3171323/4752883 devi premere <leader> f, quindi sfogliare il file con hjkl o altri tasti / cercare il nome del file. Quindi premere o, invio, t o v per aprire rapidamente il file sotto il cursore.
alpha_989,

Ho recuperato un file che ho eliminato per errore rmusando il metodo sopra menzionato.
tandem il

55

Il modo migliore che uso è

:browse oldfiles

Il modo più semplice su vim.


1
Bello! Ho mappato quell'espressione come "nmap bo: sfoglia i vecchi file <CR>" (senza le virgolette) nel mio ~ / .vimrc. Digitando semplicemente quel mapping (bo) in modalità Normale si esegue quel comando
Victoria Stuart


22

Risposta molto tardi qui ... spiegando la risposta di @sarnolds - È possibile visualizzare la cronologia dei file con il comando oldfiles @see: h oldfiles o: h viminfo

:oldfiles 

Inoltre, puoi avere una gestione dei file a grana fine con viste e sessioni ... @see: h mkview e: h mksession per dettagli ...


4
È utile sapere come aprire effettivamente un file dopo aver appreso il numero dall'elenco di :oldfiles. Si può fare questo interattivamente usando il :browsecomando, come spiegato da @sarnold, ma è anche possibile farlo manualmente usando :e #<Ndove N è un numero dalla oldfileslista.
Krzysztof Adamski,

11

Esiste un coltellino svizzero di plug-in CtrlP per il cambio di file , anch'esso parte di janus distributive. Ha un :CtrlPMRUcomando con ricerca intelligente tra i file utilizzati di recente.

Nota: CtrlP mantiene il proprio elenco dei file utilizzati più recenti in g:ctrlp_cache_dir."mru/cache.txt". Non sta riutilizzando viminfo ( set viminfo?) che contiene un elenco di segni di file. Ciò è utile se si desidera cancellare questo elenco.


1
L'interfaccia CtrlP non è intuitiva per gli utenti di VIM? Non vale la pena imparare la complicata interfaccia a fare una cosa semplice come trovare il file MRU = ~ / regexp / (fatto facilmente con perl / grep regexp ~ / _viminfo).
mosh

Sì .. Ho cercato di capire come usare Ctrlp, ma MRU sembra essere molto più facile da usare, se hai un semplice set di file ( stackoverflow.com/a/3171323/4752883 ). In MRU puoi anche fare una ricerca regexp VIM per trovare il file che ti serve ...
alpha_989

9

Utilizzare :bro olquindi premere il numero corrispondente al file che si desidera aprire.


5

Il plug-in CtrlP consente di cercare tra i file utilizzati di recente e i file nella directory corrente con questo comando:

nnoremap <c-p> :CtrlPMixed<cr>

Questo ti evita il fastidio di dover gestire i comandi Vim integrati e il plug-in MRU, nessuno dei quali ti consente di eseguire ricerche fuzzy di file, il che è fondamentale quando lavori su progetti più grandi.


Per coloro che sono resistenti al re-mapping funzionale di default di Ctrl-P: Potresti aprire Ctrl-P normalmente e usare Ctrl-F o Ctrl-B per passare da una modalità all'altra (MRU è uno di questi)
Gustavo Matias


2

Come visto nei commenti qui (http://stackoverflow.com/questions/571955/undo-close-tab-in-vim), probabilmente il tuo file è ancora aperto in un buffer:

:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number

Ad esempio puoi riaprire il terzo buffer in una nuova scheda (usa invece: e se non usi le schede):

:tabnew +3buf

1
Sì, funziona. Ma sicuramente il lavoro di un editore è quello di rendere le cose facili? Se devi emettere un comando, identificare visivamente qualcosa, ricordare un ID, quindi emettere un altro comando che è una vera perdita di tempo dell'utente. La tua risposta è corretta e non intendo offesa, ma non costituisce una delle caratteristiche killer di Vim!
artfulrobot,

Ho avuto lo stesso problema. hai provato buffexplorer? Combina ls e: tabnew + Nbuf. Ora è possibile aprire l'elenco dei buffer e aprirlo in una nuova scheda ecc. Con una sequenza di tasti (o, t, v) etcc.
alpha_989,

2

Potresti essere in grado di accedere all'elenco dalla riga di comando con:

grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'"$HOME"','

Spiegazione:

grep '^>' ~/.viminfo  #find the list of recent files
cut -c3-              #remove the first 2 characters
sed 's,~,'"$HOME"','  #replace ~ with absolute path

Potresti avere un alias bash se lo usi regolarmente

alias vim_mru="grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'\"$HOME\"','"

2

Aggiungendo i miei 2 centesimi qui perché fzf non era stato menzionato in precedenza, il che è uno strumento così meraviglioso:
fzf.vim ha un :Historycomando che ti consente di cercare i file usati più recenti in un fuzzy e di cercare mentre digiti .
Personalizzo il comportamento (predefinito) di questo comando evitando che fzf riordini l'elenco dei risultati della ricerca per la migliore corrispondenza: voglio che l'ordine di tutti i nomi di file corrispondenti rimanga nell'ordine in cui questi file sono stati usati l'ultima volta.
Per realizzare questa personalizzazione, ho aggiunto quanto segue nel mio .vimrc per sovrascrivere il Historycomando predefinito definito dal plugin fzf.vim:

    command! -bang -nargs=* History
      \ call fzf#vim#history({'options': '--no-sort'})

1

Un altro plug-in che consente di scegliere il file dall'elenco degli ultimi modificati è Staritfy . Sostituisce la schermata iniziale con un elenco dei file modificati più di recente. Puoi sempre aprire questa pagina in seguito usando il :Startifycomando.


1
Non è nemmeno possibile iniziare con facilità - hai bisogno di più documenti sull'installazione e sull'utilizzo di base. Usando MRU, perché era facile da installare e da usare.
mosh

1

:ls per elencare i file recenti con il numero di buffer nella colonna di sinistra.

Quindi fai :b{buffer-number}per saltare lì.

Esempio: :lsmostra un elenco di file. Voglio passare all'ultimo file che ho visitato. :b3mi porterà lì.

Per una ricerca più rapida, esegui il mapping :lssu qualcosa, ad esempio <Leader>.nel tuo file .vimrc.


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.