2011-02-13 4 views
132

J'ai emacs split horizontalement - en haut je suis en train de modifier le code Perl, le fond est le shell. Par défaut, emacs fait en sorte que les deux fenêtres soient de taille égale, 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.Comment changer la taille des fenêtres Emacs à écran partagé?

Répondre

232

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

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 vers le bas.

Le glissement 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) va réduire une fenêtre en fonction de son contenu.

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

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

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

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

Après une de ces commandes avec repeat (C-x   z pour lancer, et juste z pour la répétition continue), il est assez facile de se rendre à la taille exacte que vous voulez.

Si vous voulez régulièrement faire 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 ceci:
(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 smidgen aki, 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 "C-c v") 'halve-other-window-height) 

tangentiellement, j'aime aussi winner-mode qui vous permet d'annuler à plusieurs reprises les modifications apportées aux configurations de fenêtres avec C-c   left ( left) (si la modification est la taille/le nombre/l'agencement des fenêtres ou simplement le tampon affiché). C-c   right vous ramène à la configuration la plus récente. Réglez-le avec le monde (winner-mode 1)

+1

Super, exactement ce que j'avais voulu! Merci beaucoup! – Steve

+1

+1: merci pour l'astérisque "annuler" du mode gagnant. BTW, dans mon cas, un clic sur le nom du tampon ouvre le tampon suivant. Mais il est facile de voir quand vous pouvez redimensionner en regardant la forme du curseur de la souris. – jfs

6

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

+3

Dans le cas où les liaisons sont différentes (les miennes sont), la commande est 'agrandir-fenêtre'. Une astuce supplémentaire consiste à utiliser un préfixe arg pour contrôler la quantité d'expansion. –

+0

Génial! Merci beaucoup! – Steve

26

Je mets ces 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) 
+0

Les deux premiers ne fonctionnent pas pour moi dans Emacs 24.3.1 sur Mac OSX 10.9.1 –

+1

@OskarPersson C'est peut-être le conflit avec les raccourcis globaux. Trouvez-le de préférence ou remappez le contrôle au verrouillage des majuscules (à ma façon), cela devrait fonctionner ensuite. – Wilbeibi

+0

J'ai eu le même problème et j'ai découvert que C-left et C-right étaient en conflit avec les raccourcis de contrôle de mission dans les Préférences Système OS X, comme décrit par @Wilbeibi. –

6

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

0

J'ai la même question. Voici ma solution.
D'abord, je définir 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-système dans un tampon, je récrire.
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 je rentre: M-x run-système-là, le tampon est redimensionnée!
Et voici mon fichier de configuration, en espérant que cela aidera. Essayons d'utiliser le document d'aide d'emacs https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el

+2

votre lien est cassé :( –

8

C-h   un

Ensuite, tapez "agrandir" ou "fenêtre"

Vous trouverez ce que vous voulez.

Profitez-en!

+0

Il est possible que l'on travaille dans un environnement dans lequel 'Ch' n'est pas disponible.Qu'est-ce que? –

+1

Si vous avez claqué la liaison carte d'aide standard, alors vous devez sûrement être au courant de ce que vous l'ai bousillé * avec *. (A défaut, essayez '' qui est le * autre * liaison de carte d'aide standard.) – phils

Questions connexes