我想知道是否有办法说 map
s-Y 到两个不同的命令。
我想我想让 s-Y 在一个较低的分割窗口中打开终端, 然后启动 bash 然后将焦点更改到新窗口
(defun bash-window ()
(interactive)
(split-window-below)
(other-window 1)
(shell)
)
然后使用相同的命令终止 shell 进程并取消拆分下部窗口,有没有一种方法可以使用 lisp 来做到这一点,看起来 lisp 不会在 emacs lisp 编程中保持状态....除非我对此不正确.
最佳答案
为什么不编写一个同时执行这两项操作的新函数,然后绑定(bind)它?
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)
关于Emacs 相同的键盘映射不同的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14781325/