如何更改分屏emacs窗口的大小?
Posted
技术标签:
【中文标题】如何更改分屏emacs窗口的大小?【英文标题】:How to change size of split screen emacs windows? 【发布时间】:2011-06-26 15:26:24 【问题描述】:我将 emacs 水平拆分 - 在顶部我正在编辑 Perl 代码,底部是外壳。默认情况下,emacs 使两个窗口的大小相等,但我希望 shell 缓冲区更小(也许是一半?)。我想知道我该怎么做。
【问题讨论】:
【参考方案1】:这不是您正在寻找的确切答案,但我在寻找 spacemacs
中的功能时偶然发现了这个问题,所以为了完整起见,我会写下我的答案。
选项是使用<SPC> + w + .
(它在原版 spacemacs 中有效)
这会打开一个瞬态窗口,您可以在其中使用[]
在粒度级别上调整大小。
不需要 C-x 或鼠标...
【讨论】:
常规的emacs中是否有类似的东西? 它可能不存在,这就是Drew首先问这个问题的原因......【参考方案2】:让我们尝试使用 emacs 帮助文档。
C-h a
然后输入“放大”或“窗口”
你会找到你想要的。
享受吧!
【讨论】:
可能有人在C-h
不可用的环境中工作。然后呢?
如果您破坏了标准的帮助地图绑定,那么您肯定应该知道您使用 破坏了什么。 (如果失败,请尝试<f1>
,这是 other 标准帮助地图绑定。)【参考方案3】:
我也有同样的问题。这是我的解决方案。 首先我定义一个新函数:
(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
【讨论】:
您的链接已损坏 :(【参考方案4】:C-x ^
采用正和负数值参数。特别是,如果您想将光标当前所在的窗口缩小四行,可以按C-u -4 C-x ^
。
【讨论】:
【参考方案5】:我把这些放在我的.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)
【讨论】:
前两个在 Mac OSX 10.9.1 上的 Emacs 24.3.1 中对我不起作用 @OskarPersson 这可能是与全局快捷方式的冲突。优先找到它或将控件重新映射到大写锁定(我的方式),它应该可以工作。 我遇到了同样的问题,发现 C-left 和 C-right 与 OS X 系统偏好设置中的任务控制快捷键冲突,如@Wilbeibi 所述。 这些键已经定义好了,在设置之前先用(global-set-key (kbd "<C-up>") nil)
取消设置,但最好用M-left
代替
我喜欢这个,但使用M-k
(放大)、M-j
(缩小)、M-l
(水平放大)和M-l
(水平缩小)。【参考方案6】:
使用鼠标,您可以拖动窗口大小。
单击模式行上非“活动”的任意位置(缓冲区名称是安全的,或右侧任何未使用的区域),您可以向上或向下拖动。
左右拖动需要非常精确地点击两条模式线的连接点。
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
没有默认绑定。)
Cx (enlarge-window-horizontally
) 水平方向也是如此。Cx (@ 987654326@) 也是默认绑定的。
使用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:感谢“撤消”赢家模式提示。顺便说一句,在我的情况下,单击缓冲区名称会打开下一个缓冲区。但是很容易看出何时可以调整鼠标光标的形状。【参考方案7】:C-x o
到您想要扩大其大小的窗口。从那里,C-x ^
展开它。
【讨论】:
如果绑定不同(我的不同),命令是enlarge-window
。另一个技巧是使用前缀 arg 来控制扩展量。
太棒了!非常感谢!以上是关于如何更改分屏emacs窗口的大小?的主要内容,如果未能解决你的问题,请参考以下文章