Domanda

Mi chiedevo se questa funzionalità IDE comune fosse disponibile.

Supponiamo che io apra molti file usando Vim, usando vsplit e split. Quindi chiudo tutto.

Il giorno dopo, voglio recuperare quei file. Cioè, ripristina il modo in cui sono stati aperti, senza doverli aprire di nuovo (usando mksession! e source).

È possibile?

UPDATE:

Utilizzando i comandi .vimrc e <=>, mappando i comandi nel file <=>, c'è un modo per parametrizzare i mapping in modo da scrivere un file specifico?

ad esempio:

map <F2> :mksession! ~/vim_session @INSERT_HERE<cr> "Save session to @INSERTHERE file

Grazie in anticipo

È stato utile?

Soluzione

Puoi mappare usando: mksession e: source su un set di chiavi per un facile salvataggio e ripristino. Ecco un esempio dal mio .vimrc che utilizza F2 e F3:

map <F2> :mksession! ~/vim_session <cr> " Quick write session with F2
map <F3> :source ~/vim_session <cr>     " And load session with F3

Altri suggerimenti

Dai un'occhiata al comando :mksession , per creare un comando session :

  

Una sessione mantiene le visualizzazioni per tutti   Windows, oltre alle impostazioni globali.   Puoi salvare una sessione e quando   ripristinalo più tardi il layout della finestra   sembra lo stesso. Puoi usare una sessione   per passare rapidamente tra diversi   progetti, caricando automaticamente il file   file su cui hai lavorato l'ultima volta   progetto.

Puoi prendere in considerazione l'utilizzo di Schermata GNU . In breve: è un Window Manager della riga di comando che consente a un utente di accedere a più sessioni di terminale separate all'interno di una singola sessione di terminale. Il vantaggio principale per me è che puoi staccare la sessione, chiudere la finestra del terminale, quindi ricollegare la sessione e continuare a lavorare.

L'approccio migliore che ho trovato è utilizzare il plug-in vim-session, http: // github. com / xolox / vim-session che può essere installato aggiungendo:

Plugin 'xolox/vim-session'

al tuo .vimrc, seguito da:

:PluginInstall

Questo plugin supporta più sessioni: identifichi una sessione per nome e poi la gestisci con quel nome. Le sessioni possono essere aggiunte, eliminate, aggiornate, elencate, ...

Lo uso da diversi mesi; altamente raccomandato.

Potresti essere interessato a questo libro:

http://www.swaroopch.com/notes/Vim#Download

È una delle prime cose che ti mostrano come esempio di quanto sia grande Vim. ;)

Inoltre, <cr> sta per Ritorno a capo.

SessionMan http://www.vim.org/scripts/script. php? script_id = 2010 offre funzionalità più semplice. Fai attenzione con miniBufExplorer. È incompatibile a meno che tu non usi la versione modificata creata da andrew su vim_use (e anche in questo caso, è compatibile solo a metà strada)

La mia soluzione è la seguente, inserirli nel file .vimrc. HTH.

" session related.
" Default session is located `~/.session_'. The suffix `_' is a dirty
" solution, just like the one-element tuple `(tuple_eliment,)' in Python..
cnoremap <C-O> source ~/.session_
cnoremap <C-S> mksession! ~/.session_
nnoremap <silent> <C-S><C-S> :mksession! ~/.session_ <CR>

Sembra essere più complesso, ma molto utile se hai più sessioni da salvare e caricare.

P.S.
Qui, adotto le scorciatoie <Ctrl-S> e <Ctrl-O> familiari, per salvare e caricare sessioni. IMHO, è più comodo che allungare la mano verso il tasto <Fn>. ; -)

Suggerisco di usare vim-obsession . È molto meglio del valore predefinito mksession in quanto rimane fuori dal tuo mentre fai ancora quello che vuoi.

Basato sulla risposta di hgmnz e sull'espansione per l'aggiornamento.

Puoi eliminare <cr> dalla mappatura e questo ti metterà in modalità comando per terminare il comando.

map <F2> :mksession! ~/<will stop here and you can type>

Quando si accede alla modalità di comando è possibile digitare%, quindi premere tab e si espanderà nel percorso assoluto del file corrente, è anche possibile digitare%: p: he premere tab per espandere nella directory del file corrente.

Puoi anche salvare ogni sessione nella directory di lavoro e usando le directory buffer locali puoi avere più sessioni per le directory di lavoro.

map <F2> :mksession! ./.vim_sessions <cr> " Will save session to current buffers directory.
map <F3> :source ./.vim_sessions <cr>
:lcd " Changes the current's buffer directory

Fai anche attenzione a ricaricare le sessioni in quanto scarica tutti i buffer caricati correnti ( http: //vimdoc.sourceforge.net/htmldoc/starting.html#%3Amksession )

  
      
  1. Scarica tutti i buffer attualmente caricati.
  2.   
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top