2

我想知道是否有办法说地图

sY 到两个不同的命令。

我在想我想让 sY 在一个较低的拆分窗口中调出终端,然后调出 bash,然后将焦点切换到新窗口,这样

(defun bash-window ()
  (interactive)  
  (split-window-below)
  (other-window 1)
  (shell)
  )

然后用相同的命令终止shell进程并取消拆分下部窗口有没有办法用lisp做到这一点,它似乎lisp在emacs lisp编程中没有保持状态......除非我对此不正确。

4

1 回答 1

2

为什么不写一个新的函数来做这两个,然后绑定呢?

Emacs Lisp(以及一般的大多数 Lisp)确实有状态,你只需要知道在哪里寻找它。(这是 CLisp 与纯函数式最大的不同。)

例如,

(setq bash-window-active nil)

(defun bash-window nil
    (interactive)
    (if bash-window-active
        (function-to-reverse-those-performed-below)
      (progn
        (split-window-below)
        (other-window 1)
        (shell)
        (setq bash-window-active t)))

(global-set-key "\C-cb" 'bash-window)
于 2013-02-08T21:16:06.213 回答