在另一个emacs窗口中启动py-shell命令

时间:2014-01-09 15:04:45

标签: emacs python-mode

在Emacs中使用python-mode时,我首先通过 C-x 3 拆分屏幕。 我希望能够 C-c!其他窗口中启动py-shell,而不是在当前活动的窗口中启动。如何配置Emacs来实现这一点,而无需在启动shell之前使用 C-x o 切换窗口?

我正在使用Emacs 24.3.1,我已经在~/.emacs.d中获得了所有配置文件。

我刚刚使用python-modepackage-install软件包与Marmalade存储库一起安装,我还没有编辑任何与.el相关的python-mode文件。

2 个答案:

答案 0 :(得分:0)

建议可让您即时重新定义其他库中的代码。

(defadvice py-shell (around auto-split activate)
    (split-window-right)
    (other-window)
    ,ad-do-it
    (other-window))

变更适用。

答案 1 :(得分:0)

正如@BleedingFingers所说,你可以简单地使用一个宏并将其绑定到一个键。是否要重新使用宏的 C-c!绑定或将其绑定到另一个键,取决于您。

如果你决定使用宏选项,从Emacs开始只显示一个窗口,这里是如何继续:

定义宏

F3

C-x 3

C-x o

M-x py-shell RET

C-x o

F4

为宏指定名称

M-x name-last-kbd-macro RET py-shell-other-window RET

您可以将py-shell-other-window替换为您要用于宏的任何名称。

将宏添加到您的配置

打开配置文件,将点(光标)移动到空行并执行

M-x insert-kbd-macro RET

这会将宏定义插入到配置文件中。

将宏绑定到键

将以下代码添加到配置文件中,以将宏绑定到python-mode中的键:

(require 'python-mode) ; Make sure python-mode-map is available
                       ; for modification
(define-key python-mode-map (kbd "C-c !") nil) ; Unset default binding 
                                               ; for C-c !
                                               ; (not necessary if you choose an
                                               ; unused binding)
(define-key python-mode-map (kbd "C-c !") 'py-shell-other-window) ; Bind macro to C-c !

上转动键绑定

标记上一步中添加的行并运行 M-x eval-region RET ,或者只需重新启动Emacs。

庆祝:)