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

elisp, how to switch to the opening shell in another window and issue the last command

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

(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,有人可以帮我吗?还是已经有一个组合键可以做到这一点?或者是否有一些您觉得适合这种情况的包裹?

谢谢

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

(comint-send-input)

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