У меня emacs разделены по горизонтали - вверху я редактирую код Perl, внизу - оболочка. По умолчанию emacs делает два окна одинаковыми по размеру, но я бы хотел, чтобы буфер оболочки был меньше (может быть, вдвое меньше?). Мне было интересно, как я мог это сделать.
Как изменить размер окон Emacs с разделенным экраном?
Ответы (7)
С помощью мыши вы можете перемещать размеры окна.
Щелкните в любом месте строки режима, которая в противном случае не была бы «активной» (имя буфера безопасно, или любая неиспользуемая область справа), и вы можете перетащить вверх или вниз.
Перетаскивание из стороны в сторону требует очень точного щелчка в месте соединения двух линий режима.
C-x - (shrink-window-if-larger-than-buffer
) сжимает окно, чтобы оно соответствовало его содержимому.
C-x + (balance-windows
) сделает окна одинаковой высоты и ширины.
C-x ^ (enlarge-window
) увеличивает высоту на 1 строку или значение аргумента префикса. Отрицательный аргумент уменьшает окно. например C-- C-1 C-6 Cx ^ сжимается на 16 строк , как и Cu - 1 6 Cx ^ kbd >.
(Для shrink-window
привязки по умолчанию нет.)
Cx } (enlarge-window-horizontally
) делает то же самое по горизонтали.
Cx { (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 hacky, так что было бы лучше:
(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)
Я положил это в свой .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)
(global-set-key (kbd "<C-up>") nil)
, прежде чем устанавливать его, но лучше вместо этого использовать M-left
- person Mauricio Cortazar; 08.12.2017
M-k
(увеличить), M-j
(уменьшить), M-l
(увеличить по горизонтали) и M-l
(уменьшить по горизонтали).
- person goetzc; 09.08.2018
давайте попробуем использовать справочный документ emacs.
C-h a
Затем введите «увеличить» или «окно».
Вы найдете то, что хотите.
Наслаждаться!
C-h
недоступен. Что тогда?
- person Derrell Durrett; 22.05.2017
<f1>
, который является другой стандартной привязкой справочной карты.)
- person phils; 20.09.2017
C-x o
в окно, размер которого вы хотите увеличить. Оттуда C-x ^
, чтобы расширить его.
enlarge-window
. Дополнительный совет - использовать префикс arg для управления степенью расширения.
- person Joseph Gay; 14.02.2011
C-x ^
принимает положительные и числовые аргументы. В частности, если вы хотите уменьшить окно, в котором в данный момент находится курсор, на четыре строки, вы можете нажать C-u -4 C-x ^
.
Это не точный ответ, который вы ищете, но я наткнулся на этот вопрос, когда искал функциональность в spacemacs
, поэтому я напишу свой ответ только для полноты картины.
Вариант - использовать <SPC> + w + .
(работает в vanilla spacemacs)
Это открывает временное окно, в котором можно использовать []{}
для изменения размера на детальном уровне.
Нет необходимости в C-x или Mouse ...
У меня такой же вопрос. Вот мое решение.
Сначала я определяю новую функцию:
(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-here, размер буфера изменяется!
И вот мой файл конфигурации, надеюсь, это поможет. https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el