Встроенный способ сделать это с регистрами.
Например, используйте, C-xrwaчтобы сохранить текущую конфигурацию окна, чтобы зарегистрировать.
Тогда вы можете использовать встроенную привязку C-x1для запускаdelete-other-windows
после того, как вы закончите смотреть на один файл, используйте, C-xrjaчтобы вернуться к сохраненной конфигурации окна в реестре a.
Короче:
C-xrwa (сохранить конфигурацию в реестре)
C-x1 (удалить другие окна)
C-xrja (повторно сохранить сохраненную конфигурацию окна)
Хотя я считаю, что регистры громоздки, я использую собственный стек конфигурации окон для управления своими конфигурациями.
У меня есть две привязки, которые помещают текущую конфигурацию в стек, выталкивают и применяют верхнюю конфигурацию.
Итак, в вашем сценарии я бы выполнил привязку push, затем Cx 1, затем выполнил привязку pop.
Вот код:
(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")))
Вы можете привязать winstack-push
к чему - то , как C-cC-uи winstack-pop
в C-cC-oлегко прыгать.
Я использую
winner-mode
. Вот мои настройки:Я не знаю, есть ли способ добавить макет в закладки или что-то в этом роде, но мне достаточно постоянно переключаться на предыдущий макет.
источник
Emacs предлагает регистры для сохранения и применения данных, таких как текущая конфигурация окна, это можно сделать с помощью
C-x r w
иC-x r j
. Однако такой подход становится громоздким, так как вам нужно запомнить регистры окна.Есть несколько пакетов для улучшения этого. iregister делает эту базовую функцию более понятной и интерактивной. Другие, которые мне известны, используют его без влияния на регистры, такие как elscreen и escreen, которые используют панель заголовка для отображения вкладок. рабочие группы и рабочие группы2 - это два новых и более обширных подхода к этой проблеме. Мне лично это тоже не понравилось, и поэтому я написал свой, который где-то посередине, и, надеюсь, меньше ошибок и сложности.
источник
(window-configuration-to-register "1")
в качестве команды в моем .emacs, но это не сработалоВы можете сохранить текущий макет окна в регистр, а затем восстановить его с помощью
jump-to-register
. Командаwindow-configuration-to-register
привязанаC-x r w
по умолчанию.Например, когда ваши окна расположены удобным образом, вы можете сохранить их для регистрации,
i
используя:C-x r w i
и восстановить макет позжеC-x r j i
.источник
Zygospore позволяет быстро исправить ситуацию, когда у вас открыто несколько окон, и вы хотите временно развернуть одно из них. Это изменяет поведение
C-x 1
. Когда у вас открыто несколько окон, оно ведет себя как по умолчаниюdelete-other-windows
и удаляет все окна, кроме того, которое вы просматриваете. Когда вы нажмете его снова, он восстанавливает другие окна.Режим Winner предоставляет более общее решение, но zygospore отлично подходит для временного увеличения одного окна в кадре. Лучше всего то, что он не использует никаких новых сочетаний клавиш - он
C-x 1
очень интуитивно понятен, поэтому нет новых привязок, которые нужно изучать.источник
Это интересный вопрос. Несколько лет назад я исследовал все решения. Только workgroups2.el достаточно тяжелый, чтобы покрыть все угловые случаи.
Но рабочие группы2 UI это катастрофа. Например, если вы включите режим рабочей группы (как предложено в README), предыдущий макет будет автоматически загружен во время запуска emacs. Это делает запуск крайне медленным КАЖДЫЙ раз.
Мое решение состоит в том, чтобы рассматривать рабочие группы2 как набор API вместо готового к использованию инструмента. Поэтому я изменяю взаимодействие с пользовательским интерфейсом по умолчанию, используя ivy-mode ( https://github.com/abo-abo/swiper ) с @ abo-abo
Переключить полное окно легко, достаточно использовать API из режима победителя.
Вот полный код (я использую только
M-x toggle-full-window
,M-x wg-create-workgroup
иM-x my-wg-switch-workgroup
вам также нужно установить swiper, как я уже упоминал выше),источник