La manière intégrée de le faire est avec des registres.
Par exemple, utilisez C-xrwapour enregistrer la configuration actuelle de la fenêtre pour enregistrer un fichier.
Ensuite, vous pouvez utiliser la liaison intégrée C-x1pour exécuterdelete-other-windows
une fois que vous avez terminé de regarder le fichier unique, utilisez C-xrjapour revenir à la configuration de la fenêtre enregistrée dans le registre a.
En bref:
C-xrwa (enregistrer la configuration dans le registre)
C-x1 (supprimer d'autres fenêtres)
C-xrja (réappliquer la configuration de la fenêtre enregistrée)
Je trouve que les registres sont difficiles à utiliser, j'utilise une pile de configuration de fenêtre personnalisée pour gérer mes configurations.
J'ai deux liaisons qui poussent la configuration actuelle sur la pile, et pop et appliquent la configuration supérieure.
Donc, dans votre scénario, j'effectuerais ma liaison push, puis Cx 1, puis j'effectuerais ma liaison pop.
Voici le code:
(defvar winstack-stack '()
"A Stack holding window configurations.
Use `winstack-push' and
`winstack-pop' to modify it.")
(defun winstack-push()
"Push the current window configuration onto `winstack-stack'."
(interactive)
(if (and (window-configuration-p (first winstack-stack))
(compare-window-configurations (first winstack-stack) (current-window-configuration)))
(message "Current config already pushed")
(progn (push (current-window-configuration) winstack-stack)
(message (concat "pushed " (number-to-string
(length (window-list (selected-frame)))) " frame config")))))
(defun winstack-pop()
"Pop the last window configuration off `winstack-stack' and apply it."
(interactive)
(if (first winstack-stack)
(progn (set-window-configuration (pop winstack-stack))
(message "popped"))
(message "End of window stack")))
Vous pouvez ensuite vous lier winstack-push
à quelque chose comme C-cC-u, et winstack-pop
à C-cC-osauter facilement.
J'utilise
winner-mode
. Voici ma configuration:Je ne sais pas s'il existe un moyen de mettre en signet une mise en page ou quelque chose, mais être capable de revenir en continu à la mise en page précédente me suffit.
la source
Emacs propose des registres pour enregistrer et appliquer des données telles que la configuration actuelle de votre fenêtre, cela peut être fait avec
C-x r w
etC-x r j
. Cependant, cette approche devient lourde car vous devez vous souvenir des registres de fenêtre.Il existe quelques packages pour améliorer cela. iregister rend cette fonctionnalité de base plus consultable et interactive. Les autres que je connais l'utilisent sans impact sur les registres, comme elscreen et escreen qui utilisent la barre d'en-tête pour afficher les onglets. groupes de travail et groupes de travail2 sont deux approches plus récentes et plus étendues de ce problème. Personnellement, je n'ai pas aimé non plus et j'ai donc écrit le mien quelque part entre les deux et avec, espérons-le, moins de bugs et de complexité.
la source
(window-configuration-to-register "1")
tant que commande dans mon .emacs, mais cela n'a pas fonctionnéVous pouvez enregistrer la disposition de la fenêtre actuelle dans un registre, puis la restaurer à l'aide de
jump-to-register
. La commandewindow-configuration-to-register
est liéeC-x r w
par défaut.Par exemple, lorsque vos fenêtres sont disposées de manière utile, vous pouvez les enregistrer pour vous enregistrer en
i
utilisant:C-x r w i
et restaurer la disposition ultérieurement en utilisantC-x r j i
.la source
Zygospore fournit une solution rapide pour la situation où plusieurs fenêtres sont ouvertes et que vous souhaitez maximiser temporairement l'une d'entre elles. Il modifie le comportement de
C-x 1
. Lorsque vous avez plusieurs fenêtres ouvertes, elle se comporte comme la valeur par défautdelete-other-windows
et supprime toutes les fenêtres à l'exception de celle que vous consultez. Lorsque vous le frappez à nouveau, il restaure les autres fenêtres.Le mode gagnant offre une solution plus générale, mais la zygospore est idéale pour zoomer temporairement sur une seule fenêtre dans un cadre. La meilleure chose est qu'il n'utilise pas de nouvelles liaisons de touches - il redéfinit
C-x 1
de manière très intuitive, donc il n'y a pas de nouvelles liaisons à apprendre.la source
C'est une question intéressante. Il y a plusieurs années, j'ai étudié toutes les solutions. Seul workgroups2.el est suffisamment lourd pour couvrir tous les cas d'angle.
Mais l'interface utilisateur de workgroups2 est un désastre. Par exemple, si vous activez le mode groupe de travail (comme le suggère son README), la disposition précédente sera automatiquement chargée lors du démarrage d'emacs. Cela rend le démarrage extrêmement lent CHAQUE fois.
Ma solution consiste à traiter les groupes de travail2 comme une collection d'API au lieu d'un outil utilisable prêt à l'emploi. Je change donc son interaction d'interface utilisateur par défaut en utilisant le mode ivy ( https://github.com/abo-abo/swiper ) de @ abo-abo
Basculer la fenêtre complète est facile, utiliser les API du mode gagnant est suffisant.
Voici le code complet (j'utilise uniquement
M-x toggle-full-window
,M-x wg-create-workgroup
etM-x my-wg-switch-workgroup
, vous devez également installer swiper, comme je l'ai mentionné ci-dessus),la source