Jak zmienić rozmiar okna Emacs z podzielonym ekranem?

Mam Emacsa podzielonego poziomo - na górze edytuję Kod Perla, na dole jest powłoka. Domyślnie emacs sprawia, że dwa okna są równe, ale chciałbym, aby bufor powłoki był mniejszy(może o połowę mniejszy?). Zastanawiałem się, jak Mogę to zrobić.

Author: Drew Gaynor, 2011-02-14

6 answers

Za pomocą myszki możesz przeciągać rozmiary okien.

Kliknij w dowolnym miejscu na linii mode, która nie jest inaczej "aktywna" (nazwa bufora jest Bezpieczna lub dowolny niewykorzystany obszar po prawej stronie), a możesz przeciągnąć w górę lub w dół.

Przeciąganie z boku na bok wymaga bardzo precyzyjnego kliknięcia w miejscu, w którym łączą się dwie linie trybu.

C-x - (shrink-window-if-larger-than-buffer) zmniejszy okno, aby pasowało do jego zawartości.

C-x + (balance-windows) zrobi okna te same wysokości i szerokości.

C-x ^ (enlarge-window) zwiększa wysokość o 1 linię lub wartość ARG przedrostka. Ujemna arg kurczy okno. np. C-- C-1 C-6 C-x ^ zmniejsza się o 16 rzędów, podobnie jak C-u - 1 6 C-x ^.

(nie ma domyślnego powiązania dla shrink-window.)

C-x } (enlarge-window-horizontally) czy podobnie, poziomo.
C-x { (shrink-window-horizontally) jest również domyślnie związana.

Wykonując jedno z tych poleceń z repeat (C-x z aby zainicjować, i po prostu z aby kontynuować powtarzanie) sprawia, że dość łatwo dostać się do dokładnego rozmiaru, który chcesz.

Jeśli regularnie chcesz to robić z określoną wartością, możesz nagrać makro klawiatury, aby to zrobić, lub użyć czegoś takiego
(global-set-key (kbd "C-c v") (kbd "C-u - 1 6 C-x ^"))

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

Który jest a smidgen hacky, więc tak będzie lepiej:

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

Bardzo mi się podoba winner-mode, który pozwala na wielokrotne "cofanie" wszelkich zmian w konfiguracjach okien za pomocą C-c left (czy zmiana to Rozmiar/liczba / rozmieszczenie okien, czy tylko jaki bufor zostanie wyświetlony). C-c right zwraca najnowszą konfigurację. Ustaw go globalnie za pomocą (winner-mode 1)

 258
Author: phils,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-02 00:18:02

Wrzucam je do mojego .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)
 30
Author: wilbeibi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-03 13:40:17

Spróbujmy użyć dokumentu pomocy Emacsa.

C-h a

Następnie wpisz "powiększ " lub"okno"

Znajdziesz to, czego chcesz.

Enjoy!

 11
Author: maoyang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-21 05:31:47

C-x o do okna, którego rozmiar chcesz rozszerzyć. Stamtąd, C-x ^, aby ją rozszerzyć.

 6
Author: vpit3833,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-14 00:02:49

C-x ^ przyjmuje dodatnie i ujemne argumenty liczbowe. W szczególności, jeśli chcesz zmniejszyć okno, w którym znajduje się kursor, o cztery linie, możesz nacisnąć C-u -4 C-x ^.

 6
Author: jpcooper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-03 08:30:00

Mam to samo pytanie. Oto moje rozwiązanie.
Najpierw zdefiniuję nową funkcję:

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

Na przykład, chcę uruchomić schemat w buforze, więc przepisuję go ponownie.
A oto definicja, z funkcją zdefiniowaną wcześniej:

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

Więc teraz, kiedy wpisuję: m-x run-scheme-tutaj, bufor jest zmieniany!
A oto mój plik konfiguracyjny, mam nadzieję, że to pomoże. https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-25 07:33:05