Как изменить размер окон Emacs с разделенным экраном? - PullRequest
162 голосов
/ 14 февраля 2011

У меня emacs разделен по горизонтали - сверху я редактирую код Perl, снизу - оболочка. По умолчанию emacs делает два окна равными по размеру, но я бы хотел, чтобы буфер оболочки был меньше (может быть, вдвое меньше?). Мне было интересно, как я мог это сделать.

Ответы [ 6 ]

279 голосов
/ 14 февраля 2011

С помощью мыши вы можете перетаскивать размеры окон вокруг.

Щелкните в любом месте строки режима, которая иначе не является «активной» (имя буфера является безопасным, или любая неиспользуемая область справа), и вы можете перетащить вверх или вниз.

Для перетаскивания из стороны в сторону требуется очень точный щелчок в месте соединения двух линий режима.

C-x - (shrink-window-if-larger-than-buffer) уменьшит окно, чтобы соответствовать его содержимому.

C-x + (balance-windows) сделает окна одинаковой высоты и ширины.

C-x ^ (enlarge-window) увеличивает высоту на 1 строку или значение префикса arg. Отрицательный аргумент сжимает окно. например C - C-1 C-6 Cx ^ сжимается на 16 строк, как и Cu - 1 6 Cx ^ .

(Нет привязки по умолчанию для shrink-window.)

C-x } (enlarge-window-horizontally) аналогично, горизонтально.
C-x { (shrink-window-horizontally) также связан по умолчанию.

После выполнения одной из этих команд с помощью repeat ( Cx z для запуска и просто z для продолжения повторения) довольно легко добраться до Точный размер вы хотите.

Если вы регулярно хотите делать это с определенным значением, вы можете записать макрос клавиатуры, чтобы сделать это, или использовать что-то вроде
(global-set-key (kbd "C-c v") (kbd "C-u - 1 6 C-x ^"))

или это:
(global-set-key (kbd "C-c v") (kbd "C-x o C-x 2 C-x 0 C-u - 1 C-x o"))

Какая хакерская smidgen, так что это было бы лучше:

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

Тангенциально, мне также нравится winner-mode, который позволяет вам неоднократно «отменять» любые изменения конфигурации окон с помощью Cc left (независимо от того, является ли изменение размером / числом / расположением окна, или только какой буфер отображается). C-c right возвращает вас к самой последней конфигурации. Установите его глобально с помощью (winner-mode 1)

31 голосов
/ 03 марта 2013

Я положил их в свой .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)
13 голосов
/ 21 мая 2016

давайте попробуем использовать справочный документ emacs.

C-h a

Затем введите «увеличить» или «окно»

Вы найдете то, что хотите.

Наслаждайтесь!

6 голосов
/ 03 июля 2013

C-x ^ принимает положительные и отрицательные числовые аргументы. В частности, если вы хотите уменьшить окно с текущим курсором на четыре строки, вы можете нажать C-u -4 C-x ^.

6 голосов
/ 14 февраля 2011

C-x o к окну, размер которого вы хотите расширить.Оттуда C-x ^, чтобы расширить его.

0 голосов
/ 25 июля 2013

У меня такой же вопрос.Вот мое решение.
Сначала я определю новую функцию:

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

Например, я хочу запустить схему в буфере, поэтому я переписываю ее.
И вот определение, с функцией, определенной ранее:

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

Так что теперь, когда я ввожу: Mx run-схема-здесь, размер буфера изменяется!
А вот мой файл конфигурации, надеясь, что это поможет.https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el

...