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

<p>у меня emacs разделен по горизонтали - сверху я редактирую код perl, снизу - оболочка. по умолчанию emacs делает два окна равными по размеру, но я бы хотел, чтобы буфер shell был меньше (может быть, в два раза меньше?). мне было интересно, как я мог это сделать.</p>

<p>с помощью мыши вы можете перетаскивать размеры окон вокруг.</p><p>щелкните в любом месте строки режима, которая иначе не является "активной" (имя буфера является безопасным, или любая неиспользуемая область справа), и вы можете перетащить вверх или вниз.</p><p>перетаскивание из стороны в сторону требует очень точного щелчка в месте соединения двух линий режима.</p><p><kbd>c-x</kbd><kbd>-</kbd> (<code>shrink-window-if-larger-than-buffer</code>) уменьшит окно, чтобы соответствовать его содержимому.</p><p><kbd>c-x</kbd><kbd>+</kbd> (<code>balance-windows</code>) сделает окна одинаковой высоты и ширины.</p><p><kbd>c-x</kbd><kbd>^</kbd> (<code>enlarge-window</code>) увеличивает высоту на 1 строку или значение префикса arg. отрицательный аргумент сжимает окно. например <kbd>c--</kbd><kbd>c-1</kbd><kbd>c-6</kbd><kbd>c-x</kbd><kbd>^</kbd> сжимается на 16 рядов, как и <kbd>c-u</kbd><kbd>-</kbd><kbd>1</kbd><kbd>6</kbd><kbd>c-x</kbd><kbd>^</kbd>,.</p><p>(нет привязки по умолчанию для <code>shrink-window</code>.)</p><p><kbd>c-x</kbd><kbd>}</kbd> (<code>enlarge-window-horizontally</code>) делает то же самое, по горизонтали.<br> <kbd>c-x</kbd><kbd>{</kbd> (<code>shrink-window-horizontally</code>) также связан по умолчанию.</p><p>после одной из этих команд с <code>repeat</code> (<kbd>c-x</kbd><kbd>z</kbd> инициировать и просто <kbd>z</kbd> для продолжения повторения) позволяет довольно легко получить нужный размер.</p><p>если вы регулярно хотите делать это с определенным значением, вы можете записать макрос клавиатуры, чтобы сделать это, или использовать что-то вроде<br> <code>(global-set-key (kbd "c-c v") (kbd "c-u - 1 6 c-x ^"))</code></p><p>или это:<br> <code>(global-set-key (kbd "c-c v") (kbd "c-x o c-x 2 c-x 0 c-u - 1 c-x o"))</code></p><p>который является smidgen hacky, так что это было бы лучше:</p><pre><code>(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) </code></pre><p>тангенциально, я также люблю <code>winner-mode</code>, который позволяет вам неоднократно "отменять" любые изменения в конфигурациях окон с <kbd>c-c</kbd><kbd>left</kbd> (является ли изменение размером/числом/расположением окон, или просто, какой буфер отображается). <kbd>c-c</kbd><kbd>right</kbd> возвращает вас к самой последней конфигурации. установите его глобально с помощью <code>(winner-mode 1)</code></p>

<p>я положил их в свой <code>.emacs</code>:</p><pre><code>(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) </code></pre>

<p>давайте попробуем использовать справочный документ emacs.</p><p><kbd>c-h</kbd><kbd>a</kbd></p><p>затем введите "увеличить" или "окно"</p><p>вы найдете то, что вы хотите.</p><p>наслаждайтесь!</p>

<p><code>c-x o</code> к окну, размер которого вы хотите расширить. оттуда, <code>c-x ^</code>, чтобы развернуть его.</p>

<p><code>c-x ^</code> принимает положительные <em>и</em> отрицательные числовые аргументы. в частности, если вы хотите уменьшить окно с текущим курсором на четыре строки, вы можете нажать <code>c-u -4 c-x ^</code>.</p>

<p>у меня такой же вопрос. вот мое решение.<br> сначала я определю новую функцию:</p><pre><code>(defun buffer-resize () (delete-other-windows) (split-window-vertically (floor (* 0.68 (window-height)))) (other-window 1) (switch-to-buffer buf) (other-window 1)) </code></pre><p>например, я хочу запустить схему в буфере, поэтому я переписываю ее.<br> а вот определение с функцией, определенной ранее:</p><pre><code>(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))) </code></pre><p>так что теперь, когда я ввожу: m-x run-схема-здесь, размер буфера изменяется!<br> а вот мой конфигурационный файл, надеясь, что это поможет. <a href="https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el">https://github.com/judevc/dotfiles/blob/master/.emacs.d/scheme-conf.el</a> </p>