1

我设置键绑定如下。

(global-set-key [M-down] 'shrink-window)
(global-set-key [M-up] 'enlarge-window)

因此,使用 M-up 我可以放大窗口,否则使用 M-down。但是,如果当前窗口较低,我想用 M-up 放大窗口。如果当前窗口在 M-up 的上方,我想调用收缩窗口函数。

同样,如果当前窗口在下侧,我想用 M-down 缩小窗口,如果当前窗口在上侧,我想放大。

换句话说,我想指明窗口分隔符的方向。

我该如何编写函数?

4

2 回答 2

2

当答案出现时,我刚刚完成了这段代码。那好吧。

(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))))
于 2013-07-31T09:15:34.547 回答
1

利用 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可能并不总是你想要的,所以可能需要进一步的定制。

于 2013-07-31T09:12:54.303 回答