【问题标题】:IPython on emacs blocks keybindingsEmacs 上的 IPython 阻止键绑定
【发布时间】:2014-01-15 09:44:19
【问题描述】:

这是一个有很多相关问题的问题,但似乎没有一个对我有用。我需要以与使用 M-xshell 类似的方式使用 IPython,但当然要使用与 python 相关的完成。 abo-abo 在上一个问题How to open IPython interpreter in emacs? 中的解决方案可以解决问题。但是,当我在 IPython 缓冲区中时,它具有禁用键绑定的次要效果(例如,我不能使用 C-xo 更改缓冲区)。有什么简单的方法可以解决吗?

上一个答案的代码:

(defun ipython ()
  (interactive)
  (term "/usr/bin/ipython"))

【问题讨论】:

  • 我刚刚尝试使用emacs -qC-x o 工作。任何其他键绑定不起作用?
  • 我不知道为什么,但在我的情况下,似乎没有键绑定工作(C-x oC-x C-fC-x k)甚至使用emacs -q 启动 emacs。迷你缓冲区也没有显示任何活动(即,如果我按下,则不会显示“C-x”......)。编辑:如果我结束 ipython 进程(即在提示符下键入 exit),键绑定再次起作用。

标签: python shell emacs ipython


【解决方案1】:

只是为了让您知道可以将 M-x shell 与 ipython 一起使用:

(let ((explicit-shell-file-name "/usr/bin/ipython"))
  (shell))

但现在选项卡完成不起作用。也许有解决办法,我不确定。

不知何故,我更喜欢ansi-term 而不是shell。 顺便问一下,你知道 C-c C-jansi-term 中调用term-line-mode 吗? C-c C-k 切换回默认的term-char-mode。 在term-line-mode 中,您可以使用通常的导航绑定等在缓冲区中移动。

【讨论】:

  • 我不知道这是否是您的意思,但我可以使用 C-c C-j 从您的原始答案中恢复 ipython shell 的正常键绑定。但是,当term-line-model TAB 完成不起作用时,TAB 完成不起作用。就个人而言,我更喜欢 M-x shell 并且想要一个像它一样工作的 ipython 缓冲区,但目前这是一个很好的解决方案。
【解决方案2】:

也许试试 python-mode.el。 M-x ipython RET 应该比。

【讨论】:

  • 我使用 python-mode.el 获得的 ipython 终端无法正确处理 TAB 完成...
【解决方案3】:

您发布但安装的代码使用 ansi-term:

(defun ipython ()
  (interactive)
  (ansi-term "/usr/bin/ipython"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2010-09-14
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多