La risposta alla domanda sul titolo è ciò che hai osservato. Dal manuale utente di vim:help 21.3
Quando esegui Vim più volte, l'ultimo che esce memorizzerà le sue informazioni. Ciò può causare la perdita delle informazioni che sono state precedentemente archiviate da Vims. Ogni oggetto può essere ricordato una sola volta.
Tuttavia, il nome file del file viminfo (dove è memorizzata la cronologia dei comandi, tra l'altro come marchi globali e contenuti del registro, se così configurato) è modificabile! Ciò significa che è possibile impostare diverse "storie" per diversi progetti o istanze di vim. Supponendo che non si esegua più di un'istanza di vim per progetto, la gestione del nome del file viminfo tramite vimrc (o altro plug-in delle impostazioni del progetto) è un ottimo modo per gestirlo.
Imposta file viminfo alternativi
Per la gestione a livello di progetto, vogliamo configurare vim per salvare il tuo viminfo in un altro file. Questo può essere fatto all'interno di un vim in esecuzione prima di uscire o dal tuo vimrc, ad esempio potresti avere delle linee nel tuo vimrc che rilevano una particolare directory come appartenente a un progetto.
:set viminfo+=nPath/to/custom/viminfofile
Un esempio di avere vimrc impostare automaticamente questo in base alla directory:
if getcwd() == "/projects/projA"
set viminfo+=n~/.viminfo-projA
endif
Il risultato di cui sopra è che la cronologia specifica del progetto verrà caricata all'avvio e salvata all'uscita, se vim viene lanciato nella directory / projects / projA.
Carica un viminfo alternativo durante l'avvio
Questo è utile nel caso in cui si desideri salvare la cronologia sul lato e caricarla in un secondo momento, senza gestirla a livello di progetto.
Innanzitutto, per salvare la cronologia, aggiungi l'opzione viminfo come sopra prima di uscire. Quindi per caricare la cronologia, avvia vim con l'opzione -i
vim -i Path/to/custom/viminfofile
Se non vuoi uscire da vim per salvare il file viminfo, puoi usare :wv
( :wviminfo
). Questo salva il file viminfo senza uscire da vim secondo l'impostazione n sopra. E puoi anche fare :wv SomeOtherFile
per salvare in una posizione che non è la stessa impostazione nell'opzione viminfo. Questo può essere più conveniente che impostare il nome file da usare all'uscita, ma non impedisce a vim di usare il file predefinito una volta che esce.
Ad esempio, in prima vim:
:wv ~/customInfo
e nel secondo terminale:
vim -i ~/customInfo
Oppure, se un secondo vim è già in esecuzione e si desidera caricare il viminfo:
:rv ~/customInfo
Si noti che :wv
e :rv
non modificare il nome del file vim salverà all'uscita né il nome del file letto durante l'avvio.
Informazioni aggiuntive
Descrizione di set viminfo+=nSomePath
: Utilizziamo il comando set per regolare l'opzione denominata viminfo
. La +=
indica che vogliamo aggiungere alla possibilità, non cambiare tutto. Aggiungiamo l' n
opzione che specifica il nome file per viminfo. Immediatamente dopo n
abbiamo SomePath
quale sarà il nome file usato per salvare viminfo.
La documentazione per wv
( :help wv
) indica che questo comando prima legge il file viminfo, quindi si fonde tra informazioni vecchie e nuove. Finora non ho informazioni su come funziona l'unione in questo caso, ma immagino che mantenga i segni per i file e i registri sconosciuti che non sono impostati nella sessione corrente.