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