【问题标题】:Launch py-shell command in another emacs window在另一个 emacs 窗口中启动 py-shell 命令
【发布时间】:2014-01-09 15:04:44
【问题描述】:

在 Emacs 中使用python-mode 时,我首先通过 C-x 3 进行分屏。 我希望能够 C-c !other 窗口中启动py-shell,而不是在当前活动的窗口中。如何配置 Emacs 来做到这一点,而不必在启动 shell 之前使用 C-x o 切换窗口?

我使用的是 Emacs 24.3.1,我的所有配置文件都在 ~/.emacs.d 中。

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

【问题讨论】:

  • 请问您的 emacs 版本是多少?
  • 刚刚用更多信息编辑了问题,谢谢!
  • 录制一个宏,保存在init.el.emacs,并为它做一个键绑定。
  • 但是我想使用 C-c !,它已经在 python 模式下使用,我找不到绑定的定义位置。宏会覆盖它吗?
  • @MartíBosch 您可以在配置中指定是要使用C-c !,还是要使用宏或其他键绑定,请参阅我的答案below。要检查特定键绑定绑定到哪个功能,请使用C-h k;如果您知道函数的名称但不知道其绑定,请使用C-h w

标签: emacs python-mode


【解决方案1】:

正如@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。

庆祝 :)

【讨论】:

    【解决方案2】:

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

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

    变化适用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多