elisp,如何切换到另一个窗口中的开放shell并发出最后一个命令

时间:2015-01-12 03:01:11

标签: shell emacs elisp

我常常发现自己在EMACS中并排运行两个窗口,一个用于编辑,另一个用于编译,因此一个是文本模式,另一个是shell模式。 shell只运行一个编译命令,我发现编辑窗口到shell窗口的C-x o键击太多,然后是最新命令的M-p,然后切换回编辑窗口。我在.emacs中为这个作业编写了以下elisp脚本,但它实际上并没有发出命令,它在另一个窗口中显示最后一个命令并切换回来,它错过了一个" RET"在comint-previous-input之后。

(defun issue-last-command-in-the-shell-in-another-window ()
  "issue the last command in the shell in another window" 
  (interactive)
  (progn
    (other-window 1)
    (comint-previous-input 1)
    (other-window 1 )
    ))

这是我第一次写elisp,有人可以帮我吗?或者是否已经有一个关键组合来做到这一点?或者如果有一些你觉得这个案件有用的套餐?

谢谢

2 个答案:

答案 0 :(得分:4)

不需要自定义功能。使用compile运行命令,然后使用recompile重新运行它。 有关详细信息,请参阅(info "(emacs) Compilation")

答案 1 :(得分:1)

在你的函数中,在(comint-previous-input 1)调用之后,添加以下行,它将把输入发送到shell:

(comint-send-input)