Comment enregistrer la mise en page, la division et la mémoire tampon?

56

Je travaille sur plusieurs tâches dans un référentiel. J'aimerais créer des "espaces de travail" pour travailler dessus.

Un "espace de travail" ou une "disposition de mémoire tampon" ouvrira tous les fichiers sur lesquels je dois travailler dans la disposition que je souhaite (en utilisant ^w+v, ^w+spour diviser une fenêtre).

Ensuite, lorsque je commence à travailler sur une autre tâche, j'aimerais enregistrer ma mise en page actuelle et passer à une autre, mais j'aimerais pouvoir revenir aux dispositions précédentes.

Quel est le meilleur moyen d'y parvenir?

Nebril
la source

Réponses:

48

Vous pouvez utiliser vim's :mksessionet écrire chaque "espace de travail" dans un fichier différent, puis rouvrir une session à l'aide de vim -S session_file. Cependant, si vous êtes ouvert à l'utilisation d'un plugin, le plugin Startify est exactement ce dont j'ai besoin pour ce genre de scénario: https : //github.com/mhinz/vim-startify

Il fait un excellent travail de gestion de sessions, dans vim et mccvim, et vous fournit également une liste des fichiers récents lorsque vous ouvrez vim. Il changera automatiquement dans le bon répertoire de travail pour vous aussi. Il vous permet également d' épingler des fichiers sur l'écran d'ouverture de startify, ce qui est agréable pour un accès facile à des choses comme votre.vimrc

craigp
la source
23

Vous pouvez utiliser le plug - in vim-obsession de tpope pour gérer facilement les sessions. C'est comme une enveloppe pour Vim's mksession, mais fournit également un ensemble d'autres subtilités.

Vous pouvez enregistrer la session en cours (ou la disposition du tampon) en donnant la commande :Obsess. Si vous ne fournissez pas d'argument, il écrit un fichier de session appelé Session.vimpar défaut.

Pour recharger une session, utilisez vim -S <session-name>ou :source <session-name>si vous êtes déjà dans Vim.

La bonne chose est que vous ne devez pas oublier de sauvegarder la session chaque fois que vous quittez Vim. Il est automatiquement géré par le plugin.

Une autre caractéristique très importante de vim-obession est qu'il n'enregistre pas les options et les cartes. mksessioncapture les options et les cartes actuelles, ce que vous ne voulez pas voir si vous voulez juste sauvegarder la disposition du tampon. En outre, cela interfère quand un plugin est mis à jour, etc.

thameera
la source
Peut-il gérer plusieurs fichiers de session?
Nebril
1
@Nebril Il peut. Lorsque vous enregistrez la session, utilisez le format :Obsess <session-name>. Utilisez le nom de session particulier que vous voulez lors du rechargement.
thameera
J'ai découvert qu'Obsession ne se souvenait pas des divisions verticales, contrairement à mksession. Je ne fais que jouer avec ça ce soir cependant, y a-t-il quelque chose que j'ai oublié?
baxx
1
@baxx Obsession se souvient de toutes sortes de scissions. Peut-être avez-vous fermé la scission avant de quitter vim?
thameera
2
@baxx C'est vieux mais je voulais ajouter une note au cas où cela aiderait quelqu'un d'autre. La raison pour laquelle il semble que l'obsession oublie les scissions est probablement due au fait que vous quittez toutes vos scissions pour quitter vim. Cela signifie que l'état final est votre dernière fenêtre lorsque vous fermez vim, c'est ce que stocke l'obsession. J'ai eu le même problème avec les onglets et la réponse est d'utiliser: qa pour quitter toutes les fenêtres ouvertes, les scissions, les onglets. Si quelqu'un a une meilleure option, veuillez nous le faire savoir.
TC0072
12

En passant, je voudrais souligner que j’ai construit un autre plugin, dhruvasagar / vim-prosession, en tant qu’extension de tpope / vim-obsession qui l’améliore encore plus pour créer et gérer des sessions vim par défaut dans un référentiel centralisé par configuration sur un répertoire et les charge automatiquement lorsque vous lancez vim sans aucun argument sur le répertoire. Il vous permet également de basculer entre différentes sessions pour plus de commodité.

Dhruva Sagar
la source
Cela semble génial. Si je pouvais gérer les fichiers de session dans un dossier similaire aux fichiers d'annulation et de sauvegarde, cela éviterait que mes projets ne soient encombrés de fichiers d'échange qui pourraient m'époustoufler.
dragon788
1

Vous pouvez essayer le plug - in vim-workspace , ses fonctionnalités de gestion de session sont automatisées, adaptées au répertoire de travail actuel et assez simples (elles ne doivent être exécutées ToggleWorkspacequ’une seule fois).

Jaybay
la source