Vi / Vim restaurer les fichiers ouverts
Question
Je me demandais si cette fonctionnalité commune de l'EDI est disponible.
Supposons que j'ouvre plusieurs fichiers avec Vim, avec vsplit
et split
. Ensuite, je ferme tout.
Le lendemain, je souhaite récupérer ces fichiers. En d’autres termes, récupérez la manière dont ils ont été ouverts, sans avoir à rouvrir chacun d’entre eux (en utilisant mksession!
et source
).
Est-ce possible?
MISE À JOUR:
À l'aide des commandes .vimrc
et <=>, les commandes de mappage dans le fichier <=>, existe-t-il un moyen de paramétrer les mappages afin d'écrire un fichier spécifique?
par exemple:
map <F2> :mksession! ~/vim_session @INSERT_HERE<cr> "Save session to @INSERTHERE file
Merci d'avance
La solution
Vous pouvez mapper à l'aide de: mksession et: source sur un jeu de clés pour une sauvegarde et une restauration faciles. Voici un exemple de mon .vimrc qui utilise F2 et F3:
map <F2> :mksession! ~/vim_session <cr> " Quick write session with F2
map <F3> :source ~/vim_session <cr> " And load session with F3
Autres conseils
Consultez la :mksession
commande pour créer une session
:
Une session conserve les vues pour tous fenêtres, ainsi que les paramètres globaux. Vous pouvez enregistrer une session et lorsque vous restaurez plus tard la disposition de la fenêtre semble pareil. Vous pouvez utiliser une session pour basculer rapidement entre différents projets, chargeant automatiquement le les fichiers sur lesquels vous travailliez pour la dernière fois dans cette projet.
Vous pouvez envisager d’utiliser l’écran GNU . En bref: c'est un gestionnaire de fenêtres en ligne de commande qui permet à un utilisateur d'accéder à plusieurs sessions de terminal distinctes au sein d'une même session de terminal. Le principal avantage pour moi est que vous pouvez détacher la session, fermer la fenêtre de votre terminal, puis reconnecter la session et continuer à travailler.
La meilleure approche que j’ai trouvée est d’utiliser le plugin vim-session, http: // github. com / xolox / vim-session qui peut être installé en ajoutant:
Plugin 'xolox/vim-session'
à votre .vimrc, suivi de:
:PluginInstall
Ce plugin prend en charge plusieurs sessions: vous identifiez une session par son nom, puis vous la gérez avec ce nom. Les sessions peuvent être ajoutées, supprimées, mises à jour, listées, ...
Je l'utilise depuis plusieurs mois maintenant; fortement recommandé.
Ce livre pourrait vous intéresser:
http://www.swaroopch.com/notes/Vim#Download
C’est l’une des premières choses qu’ils vous montrent comme exemple de l’excellence de Vim. ;)
De plus, <cr>
signifie Carriage Return.
SessionMan http://www.vim.org/scripts/script. php? script_id = 2010 offre des fonctionnalités plus faciles. Soyez prudent avec miniBufExplorer. C'est incompatible si vous n'utilisez pas la version modifiée faite par andrew sur vim_use (et même alors, ce n'est que partiellement compatible).
Ma solution est la suivante, mettez-les dans le fichier .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>
Cela semble plus complexe, mais très utile si vous avez plusieurs sessions à enregistrer et à charger.
P.S.
Ici, j’adopte les raccourcis <Ctrl-S>
et <Ctrl-O>
bien connus pour enregistrer et charger des sessions. IMHO, c'est plus confortable que de tendre la main vers <Fn>
la clé. ; -)
Je suggère d'utiliser vim-obsession . Il est bien meilleur que le réglage par défaut mksession
car il reste en dehors de votre travail tout en faisant ce que vous voulez.
Basé sur la réponse de hgmnz et développement pour la mise à jour.
Vous pouvez supprimer le <cr>
mappage, ce qui vous mettra en mode commande pour terminer la commande.
map <F2> :mksession! ~/<will stop here and you can type>
Lorsque vous passez en mode commande, vous pouvez taper% puis appuyer sur tab et le chemin absolu du fichier en cours de développement, vous pouvez aussi taper%: p: h et appuyer sur tab pour passer au répertoire du fichier en cours.
Vous pouvez également enregistrer chaque session dans le répertoire de travail. En utilisant des répertoires de tampon locaux, vous pouvez avoir plusieurs sessions pour les répertoires de travail.
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
Soyez également prudent avec le rechargement des sessions car il décharge tous les tampons actuellement chargés ( http: //vimdoc.sourceforge.net/htmldoc/starting.html#%3Amksession )
- Décharge tous les tampons actuellement chargés.