Come salvare il layout di finestre, divisioni e buffer?


56

Ho diversi compiti a cui sto lavorando in un repository. Vorrei creare "aree di lavoro" per lavorarci sopra.

Uno "spazio di lavoro" o "layout buffer" avrebbe tutti i file su cui ho bisogno di lavorare aperti nel layout che desidero (usando ^w+v, ^w+sper dividere la finestra).

Quindi, quando inizio a lavorare su un'altra attività, vorrei salvare il mio layout attuale, passare a un altro, ma vorrei poter tornare ai layout precedenti.

Qual è il modo migliore per raggiungere questo obiettivo?

Risposte:


48

Puoi usare vim :mksessione scrivere ogni "spazio di lavoro" in un file diverso, quindi riaprire una sessione usando vim -S session_file, tuttavia, se sei aperto all'utilizzo di un plugin, trovo che il plugin Startify sia esattamente ciò di cui ho bisogno per questo tipo di scenario: https : //github.com/mhinz/vim-startify

Fa un ottimo lavoro nella gestione delle sessioni, in vim e mccvim, e ti dà anche un elenco di file recenti quando apri vim. Passerà automaticamente alla directory di lavoro giusta anche per te. Inoltre, consente di pin file nella schermata di apertura startify pure, che è bello per un facile accesso a cose come il vostro.vimrc


23

È possibile utilizzare il plug -in vim-obsession di tpope per gestire facilmente le sessioni. È come un involucro per Vim integrato mksession, ma offre anche una serie di altre bellezze.

È possibile salvare la sessione corrente (o il layout del buffer) dando il comando :Obsess. Se non si fornisce un argomento, scrive un file di sessione chiamato Session.vimper impostazione predefinita.

Per ricaricare una sessione, usa vim -S <session-name>o :source <session-name>se sei già dentro Vim.

La cosa bella è che non devi ricordare di salvare la sessione ogni volta che esci da Vim. È gestito automaticamente dal plugin.

Un'altra caratteristica molto importante di vim-obession è che non salva opzioni e mappe. mksessioncattura le opzioni e le mappe correnti, cosa che non si desidera che si verifichi se si desidera solo salvare il layout del buffer. Interferisce anche quando viene aggiornato un plug-in, ecc.


Può gestire più file di sessione?
Nebril,

1
@Nebril Può. Quando si salva la sessione, utilizzare il formato :Obsess <session-name>. Usa il nome della sessione che desideri durante il ricaricamento.
Thameera,

Ho scoperto che Obsession non ricordava le spaccature verticali, mentre lo faceva Mksession. Ma stasera mi sono solo preso gioco di questo, c'è qualcosa che mi sono perso?
baxx,

1
@baxx Obsession ricorda tutti i tipi di divisioni. Forse hai chiuso la divisione prima di uscire da Vim?
Thameera,

2
@baxx Questo è vecchio ma volevo aggiungere una nota nel caso in cui ciò fosse d'aiuto a chiunque altro. Il motivo per cui sembra che l'ossessione stia dimenticando le divisioni è probabilmente perché stai abbandonando tutte le tue divisioni per lasciare VIM. Ciò significa che lo stato finale è la tua ultima finestra quando chiudi Vim, questo è ciò che l'ossessione memorizza. Ho avuto lo stesso problema con le schede e la risposta è usare: qa per chiudere tutte le finestre aperte, le divisioni, le schede. Se qualcuno ha un'opzione migliore, faccelo sapere.
TC0072,

12

Come nota a margine , vorrei sottolineare che ho creato un altro plug-in dhruvasagar / vim-prosession come estensione di tpope / vim-obsession che lo migliora ulteriormente per creare e gestire sessioni vim per impostazione predefinita in un repository centralizzato come per configurazione in base alla directory e li carica automaticamente all'avvio di vim senza alcun argomento nella directory. Ti consente anche di passare da una sessione all'altra per comodità.


Sembra fantastico. Se potessi gestire i file di sessione in una cartella simile all'annullamento e ai file di backup per evitare che i miei progetti vengano ingombra di file di scambio che potrebbero semplicemente farmi impazzire.
dragon788,

1

Puoi provare il plug -in vim-workspace , le sue funzionalità di gestione della sessione sono automatizzate, mirate alla tua directory di lavoro corrente ed è piuttosto semplice (deve essere eseguita ToggleWorkspaceuna sola volta).

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.