Contraer ventanas divididas

11

Dadas ventanas divididas como esta:

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

Hay dos opciones para contraer las ventanas divididas:

  • eliminar-otras-ventanas (Ctrl-x 1)
  • eliminar-ventana (Ctrl-x 0)

Pregunta : ¿hay alguna forma de controlar cómo colapsan?


Por ejemplo, ¿cómo puedo colapsar así:

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

, esta:

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

, esta:

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

, o esto:

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

?

Principiante
fuente

Respuestas:

13

Prueba ace-window .

Si lo atas así:

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

Puede cambiar a la ventana 2 presionando M-p 2. Además, puede eliminar la ventana 2 presionando M-p x2: esto lo llevará a su primer ejemplo. Otros ejemplos siguen simplemente cambiando la clave final.

Hay otros modificadores presentes:

  • Use xpara eliminar
  • Use mpara intercambiar
  • Use vpara dividir verticalmente
  • Use bpara dividir horizontalmente
  • Use ipara eliminar otras ventanas que no sean la seleccionada
  • Se usa opara eliminar otras ventanas que la actual
  • Use npara cambiar a la última ventana

Los dos últimos modificadores en realidad no requieren más entradas, mientras que los demás siempre le solicitan una ventana para actuar.

Los modificadores se pueden personalizar a través de aw-dispatch-alist. Las teclas de la ventana (que son 1/2/3/4 ... por defecto) se pueden personalizar a través de aw-keys.

Aquí está la configuración que estoy usando:

(setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))
abo-abo
fuente
9

La función delete-windowtiene un argumento opcional VENTANA.

La función window-in-directiontiene un argumento obligatorio de DIRECCIÓN y argumentos opcionales para WINDOW IGNORE SIGN WRAP MIN. Para obtener más información sobre estos argumentos leyendo la cadena de documentación, un usuario puede escribir M-x describe-function RET window-in-direction RET.

Por ejemplo, las siguientes cuatro funciones podrían usarse para controlar la dirección en que se elimina una ventana. Un usuario puede desear asignar atajos de teclado.

(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)))
lista de leyes
fuente