web-dev-qa-db-fra.com

Comment changer la taille des fenêtres à écran partagé d'Emacs?

Les emacs sont divisés horizontalement - en haut, je modifie du code Perl, le bas est le shell. Par défaut, emacs rend les deux fenêtres égales en taille, mais j'aimerais que le tampon Shell soit plus petit (peut-être la moitié de la taille?). Je me demandais comment je pouvais faire ça.

164
Steve

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 autrement "active" (le nom du tampon est sécurisé, ou toute zone inutilisée à droite), et vous pouvez faire glisser le curseur vers le haut ou le bas.

Le déplacement d'un côté à l'autre nécessite un clic très précis sur l'endroit où les deux lignes de mode se rejoignent.

C-x- (shrink-window-if-larger-than-buffer) réduira une fenêtre pour s’adapter à son contenu.

C-x+ (balance-windows) donnera aux fenêtres les mêmes hauteurs et largeurs.

C-x^ (enlarge-window) augmente la hauteur d'une ligne ou de la valeur du préfixe arg. Un argument négatif rétrécit la fenêtre. par exemple. C--C-1C-6C-x^ se réduit de 16 rangées, comme le fait C-u-16C-x^.

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

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

Après l’une de ces commandes avec repeat (C-xz initier, et juste z répétition continue), il est assez 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 "C-c v") (kbd "C-u - 1 6 C-x ^"))

Ou ca:
(global-set-key (kbd "C-c v") (kbd "C-x o C-x 2 C-x 0 C-u - 1 C-x o"))

Ce qui est un smidgen hacky, alors 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 "C-c v") 'halve-other-window-height)

Tangentiellement, j'aime aussi winner-mode qui permet d’annuler de manière répétée toute modification de la configuration de la fenêtre avec C-cleft (si le changement est la taille/le nombre/la disposition des fenêtres, ou simplement quel tampon est affiché). C-cright vous ramène à la configuration la plus récente. Définissez-le globalement avec (winner-mode 1)

282
phils

Je les mets dans mon .emacs:

(global-set-key (kbd "<C-up>") 'shrink-window)
(global-set-key (kbd "<C-down>") 'enlarge-window)
(global-set-key (kbd "<C-left>") 'shrink-window-horizontally)
(global-set-key (kbd "<C-right>") 'enlarge-window-horizontally)
32
wilbeibi

essayons d'utiliser le document d'aide d'Emacs.

C-ha

Puis tapez "agrandir" ou "fenêtre"

Vous trouverez ce que vous voulez.

Prendre plaisir!

14
maoyang

C-x o à la fenêtre dont vous voulez agrandir la taille. De là, C-x ^ pour l'agrandir.

6
vpit3833

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

6
justinpc

J'ai la même question. Voici ma solution.
Je définis d’abord 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 exécuter un schéma dans un tampon, alors 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-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)))

Alors maintenant, quand j'entre: M-x run-scheme-here, le tampon 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

0
user1001237