Свернуть разделенные окна

11

Учитывая разделенные окна, как это:

|------|-------|
|1     |2      |
|      |       |
|------|-------|
|3     |4      |
|      |       |
|------|-------|

Существует два варианта свертывания разделенных окон:

  • delete-other-windows (Ctrl-x 1)
  • delete-window (Ctrl-x 0)

Вопрос : есть ли способ контролировать, как они рушатся?


Например, как я могу свернуть как это:

|------|-------|
|1             |
|              |
|------|-------|
|3     |4      |
|      |       |
|------|-------|

, это:

|------|-------|
|2             |
|              |
|------|-------|
|3     |4      |
|      |       |
|------|-------|

, это:

|------|-------|
|1     |2      |
|      |       |
|      |-------|
|      |4      |
|      |       |
|------|-------|

, или это:

|------|-------|
|3     |2      |
|      |       |
|      |-------|
|      |4      |
|      |       |
|------|-------|

?

начинающий
источник

Ответы:

13

Попробуйте туз-окно .

Если вы связываете это так:

(global-set-key "M-p" 'ace-window)

Вы можете переключиться в окно 2, нажав M-p 2. Кроме того, вы можете удалить окно 2, нажав M-p x2: это приведет вас к первому примеру. Другие примеры следуют, просто меняя окончательный ключ.

Существуют и другие модификаторы:

  • Используйте xдля удаления
  • Используйте mдля обмена
  • Используйте vдля разделения по вертикали
  • Используйте bдля разделения по горизонтали
  • Используйте iдля удаления других окон, кроме выбранного
  • Используйте oдля удаления других окон, кроме текущего
  • Используйте nдля переключения на последнее окно

Последние два модификатора на самом деле не требуют дополнительного ввода, в то время как другие всегда запрашивают у вас окно для действия.

Модификаторы настраиваются через aw-dispatch-alist. Ключи окна (по умолчанию 1/2/3/4 ...) настраиваются с помощью aw-keys.

Вот настройка, которую я использую:

(setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))
Або-або
источник
9

Функция delete-windowимеет необязательный аргумент WINDOW.

Функция window-in-directionимеет обязательный аргумент DIRECTION и необязательные аргументы для WINDOW IGNORE SIGN WRAP MIN. Чтобы узнать больше об этих аргументах, прочитав строку документа, пользователь может набрать M-x describe-function RET window-in-direction RET.

Например, следующие четыре функции могут использоваться для управления направлением удаления окна. Пользователь может пожелать назначить сочетания клавиш.

(defun delete-window-above ()
"Delete window in direction 'above."
(interactive)
  (delete-window (window-in-direction 'above)))

(defun delete-window-below ()
"Delete window in direction 'below."
(interactive)
  (delete-window (window-in-direction 'below)))

(defun delete-window-left ()
"Delete window in direction 'left."
(interactive)
  (delete-window (window-in-direction 'left)))

(defun delete-window-right ()
"Delete window in direction 'right."
(interactive)
  (delete-window (window-in-direction 'right)))
lawlist
источник