Comment changer la taille des fenêtres emacs sur écran partagé?

J’ai emacs divisé horizontalement – en haut j’édite le code Perl, le fond est le shell. Par défaut, emacs rend les deux fenêtres égales en taille, mais j’aimerais que le tampon du shell soit plus petit (peut-être la moitié?). Je me demandais comment je pouvais faire ça.

Avec la souris, vous pouvez faire glisser les tailles de fenêtre.

Cliquez n’importe où sur la ligne de mode qui n’est pas «active» (le nom du tampon est sûr, ou toute zone inutilisée sur le côté droit), et vous pouvez faire glisser vers le haut ou le bas.

Le glissement latéral nécessite un clic très précis à l’endroit où les deux lignes de mode se rejoignent.

Cx - ( shrink-window-if-larger-than-buffer ) va réduire une fenêtre pour s’adapter à son contenu.

Cx + ( balance-windows ) rendra les fenêtres de même hauteur et largeur.

Cx ^ ( enlarge-window ) augmente la hauteur de 1 ligne ou l’argument de préfixe. Un argument négatif réduit la fenêtre. Par exemple, C-- C-1 C-6 Cx ^ rétrécit de 16 lignes, tout comme Cu - 1 6 Cx ^ .

(Il n’y a pas de liaison par défaut pour la shrink-window .)

Cx } ( enlarge-window-horizontally ) fait de même horizontalement.
Cx { ( shrink-window-horizontally ) est également lié par défaut.

En suivant l’une de ces commandes avec la repeat ( Cx z à initier, et juste z pour continuer la répétition), il est très facile d’obtenir la taille exacte souhaitée.

Si vous voulez régulièrement faire cela avec une valeur spécifique, vous pouvez enregistrer une macro de clavier pour le faire ou utiliser quelque chose comme:
(global-set-key (kbd "Cc v") (kbd "Cu - 1 6 Cx ^"))

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

Ce qui est un smidgen hacky, donc ce serait mieux:

 (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) 

Tangentiellement, j’aime aussi le winner-mode qui vous permet «d’annuler» de manière répétée toute modification de la configuration de la fenêtre avec Cc (que ce soit la taille / le nombre / l’arrangement des fenêtres ou le tampon affiché). Cc right vous ramène à la configuration la plus récente. Définissez-le globalement avec (winner-mode 1)

Je les mets dans mes .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) 

Essayons d’utiliser le document d’aide emacs.

Ch a

Puis tapez “agrandir” ou “fenêtre”

Vous trouverez ce que vous voulez.

Prendre plaisir!

Cx o à la fenêtre dont vous voulez agrandir la taille. De là, Cx ^ pour le développer.

Cx ^ prend des arguments numériques positifs et négatifs. En particulier, si vous souhaitez réduire la fenêtre où votre curseur est actuellement de quatre lignes, vous pouvez appuyer sur Cu -4 Cx ^ .

J’ai la même question. Voici ma solution
Tout d’abord, je définis une nouvelle fonction:

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

Par exemple, je veux lancer un schéma dans un tampon, donc je le réécris.
Et voici la définition, avec la fonction définie précédemment:

 (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-ssortingng 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))) 

Alors maintenant, quand j’entre: Mx run-scheme-here, le buffer est redimensionné!
Et voici mon fichier de configuration, en espérant que cela vous aidera. https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el