Как изменить размер разделенных экранов emacs?

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

Ответ 1

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

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

Перемещение между соседями требует очень точного щелчка на месте, где соединяются две линии режима.

C-x & tbsp; - (shrink-window-if-larger-than-buffer) уменьшит окно, соответствующее его контенту.

C-x & tbsp; + (balance-windows) сделает окна одинаковыми по высоте и ширине.

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

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

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

Следуя одной из этих команд с repeat (C-x 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 hacky, так что было бы лучше:

(defun halve-other-window-height ()
  "Expand current window to use half of the other window lines."
  (interactive)
  (enlarge-window (/ (window-height (next-window)) 2)))

(global-set-key (kbd "C-c v") 'halve-other-window-height)

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

Ответ 2

Я помещаю их в свой .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)

Ответ 3

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

C-h a

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

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

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

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

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