我有水平分割的emacs - 顶部我正在编辑Perl代码,底部是shell。默认情况下,emacs使两个窗口的大小相等,但我希望shell缓冲区更小(可能是一半大小?)。我想知道我该怎么做。
答案 0 :(得分:279)
使用鼠标,您可以拖动窗口大小。
单击模式行上任何“非活动”的缓冲区(缓冲区名称是安全的,或右侧任何未使用的区域),然后可以向上或向下拖动。
左右拖动需要在两条模式线连接的位置进行非常精确的点击。
C-x - (shrink-window-if-larger-than-buffer
)会缩小窗口以适合其内容。
C-x + (balance-windows
)会使窗户的高度和宽度相同。
C-x ^ (enlarge-window
)将高度增加1行或前缀arg值。负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 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)
答案 1 :(得分:31)
我把这些放在我的.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)
答案 2 :(得分:13)
让我们尝试使用emacs帮助文档。
C-H 一
然后输入“放大”或“窗口”
你会找到你想要的东西。
享受!
答案 3 :(得分:6)
C-x o
到要扩展其大小的窗口。从那里C-x ^
扩展它。
答案 4 :(得分:6)
C-x ^
采用正和负数字参数。特别是,如果您想缩小当前光标所在的窗口四行,可以按C-u -4 C-x ^
。
答案 5 :(得分:1)
这不是您要查找的确切答案,但是在寻找spacemacs
中的功能时,我偶然发现了这个问题,因此我出于完整性考虑只写我的答案。
该选项是使用<SPC> + w + .
(在香草spacemac中有效)
这将打开一个过渡窗口,您可以在其中使用[]{}
在粒度级别进行调整。
不需要C-x或鼠标...
答案 6 :(得分:0)
我有同样的问题。这是我的解决方案 首先我定义一个新函数:
(defun buffer-resize ()
(delete-other-windows)
(split-window-vertically (floor (* 0.68 (window-height))))
(other-window 1)
(switch-to-buffer buf)
(other-window 1))
例如,我想在缓冲区中运行scheme,所以我重写它。
这是定义,使用前面定义的函数:
(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