¿Cómo cambiar el tamaño de las ventanas de emacs de pantalla dividida?

Tengo emacs divididos horizontalmente; en la parte superior estoy editando el código Perl, la parte inferior es el intérprete de comandos. Por defecto, emacs hace que las dos ventanas tengan el mismo tamaño, pero me gustaría que el búfer de shell sea más pequeño (¿quizás la mitad del tamaño?). Me preguntaba cómo podría hacer eso.

Con el mouse, puede arrastrar los tamaños de ventana alrededor.

Haga clic en cualquier parte de la línea de modo que de otro modo no esté “activa” (el nombre del búfer es seguro, o cualquier área no utilizada en el lado derecho), y puede arrastrar hacia arriba o hacia abajo.

El arrastre de lado a lado requiere un clic muy preciso en el lugar donde se unen las dos líneas de modo.

Cx - ( shrink-window-if-larger-than-buffer ) reducirá una ventana para ajustarse a su contenido.

Cx + ( balance-windows ) hará que Windows tenga las mismas alturas y anchuras.

Cx ^ ( enlarge-window ) aumenta la altura en 1 línea, o el valor de prefijo arg. Un argumento negativo encoge la ventana. por ejemplo, C-- C-1 C-6 Cx ^ se contrae en 16 filas, al igual que Cu - 1 6 Cx ^ .

(No hay un enlace predeterminado para shrink-window ).

Cx } ( enlarge-window-horizontally ) hace lo mismo, horizontalmente.
Cx { ( shrink-window-horizontally ) también está vinculado por defecto.

Seguir uno de estos comandos con repeat ( Cx z para iniciar, y solo z para continuar la repetición) hace que sea bastante fácil llegar al tamaño exacto que desee.

Si regularmente desea hacer esto con un valor específico, puede grabar una macro de teclado para hacerlo, o usar algo como
(global-set-key (kbd "Cc v") (kbd "Cu - 1 6 Cx ^"))

O esto:
(global-set-key (kbd "Cc v") (kbd "Cx o Cx 2 Cx 0 Cu - 1 Cx o"))

Que es un hacky smidgen, así que esto sería mejor:

 (defun halve-other-window-height () "Expand current window to use half of the other window's lines." (interactive) (enlarge-window (/ (window-height (next-window)) 2))) (global-set-key (kbd "Cc v") 'halve-other-window-height) 

Tangencialmente, también me gusta winner-mode que le permite ‘deshacer’ repetidamente cualquier cambio en las configuraciones de ventana con Cc a la izquierda (si el cambio es el tamaño / número / disposición de las ventanas, o simplemente qué buffer se muestra). Cc a la derecha lo regresa a la configuración más reciente. Establecerlo globalmente con (winner-mode 1)

Puse estos en mis .emacs :

 (global-set-key (kbd "") 'shrink-window) (global-set-key (kbd "") 'enlarge-window) (global-set-key (kbd "") 'shrink-window-horizontally) (global-set-key (kbd "") 'enlarge-window-horizontally) 

intentemos usar el documento de ayuda de emacs.

Ch a

Luego escribe “agrandar” o “ventana”

Encontrarás lo que quieres.

¡Disfrutar!

Cx o a la ventana cuyo tamaño desea expandir. A partir de ahí, Cx ^ para expandirlo.

Cx ^ toma argumentos numéricos positivos y negativos. En particular, si desea reducir la ventana en la que se encuentra su cursor en cuatro líneas, puede presionar Cu -4 Cx ^ .

Tengo la misma pregunta. Aquí está mi solución.
Primero defino una nueva función:

 (defun buffer-resize () (delete-other-windows) (split-window-vertically (floor (* 0.68 (window-height)))) (other-window 1) (switch-to-buffer buf) (other-window 1)) 

Por ejemplo, quiero ejecutar-scheme en un buffer, así que lo reescribo.
Y aquí está la definición, con la función definida anteriormente:

 (defun run-scheme-here () "Run a new scheme process at the directory of the current buffer. If a process is already running, switch to its buffer." (interactive) (let* ((proc (format "scheme: %s" default-directory)) (buf (format "*%s*" proc))) (unless (comint-check-proc buf) (let ((cmd (split-string scheme-program-name))) (set-buffer (apply 'make-comint-in-buffer proc buf (car cmd) nil (cdr cmd))) (inferior-scheme-mode) (buffer-resize))) (pop-to-buffer buf))) 

Entonces ahora cuando entro: Mx run-scheme-here, ¡el buffer se redimensiona!
Y aquí está mi archivo de configuración, esperando que esto ayude. https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el