我设置了如下键绑定。
(global-set-key [M-down] 'shrink-window)
(global-set-key [M-up] 'enlarge-window)
所以用M-向上,我可以放大窗口,用M-向下,否则。但如果当前窗口在下侧,我想用M-up放大窗口。如果当前窗口是M向上的上侧,我想调用收缩窗口函数。
同样,如果当前窗口在下侧,我想用M-向下缩小窗口,如果当前窗在上侧,我想放大窗口。
换句话说,我想指出窗口分隔符的方向。
如何编写函数?
当答案出现时,我刚刚完成这段代码。哦,好吧。
(require 'windmove)
(global-set-key [M-up]
(lambda() (interactive)
(call-interactively
(if (windmove-find-other-window 'up)
'enlarge-window
'shrink-window))))
(global-set-key [M-down]
(lambda() (interactive)
(call-interactively
(if (not (windmove-find-other-window 'up))
'enlarge-window
'shrink-window))))
利用windmove作为emacs的一部分,您可以这样做:
(require 'windmove)
(defun move-separator-up (arg)
(interactive "p")
(if (< (cdr (windmove-other-window-loc 'up)) 0)
(shrink-window arg)
(enlarge-window arg)))
(defun move-separator-down (arg)
(interactive "p")
(if (< (cdr (windmove-other-window-loc 'up)) 0)
(enlarge-window arg)
(shrink-window arg)))
当您有3个窗口时,enlarge-window
和shrink-window
规则可能并不总是符合您的要求,因此可能需要进行一些进一步的自定义。