IPython在emacs上阻止了按键绑定。

4
这是一个涉及许多相关问题但似乎都不适合我的问题。我需要以与M-xshell类似的方式使用IPython,但当然配备python相关的补全。在先前的问题abo-abo提供的解决方案可以解决问题。但是,它还会导致当我处于IPython缓冲区时禁用按键绑定(例如,我无法使用C-xo更改缓冲区)。有没有简单的方法解决这个问题?

先前回答中的代码:

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

关于如何解除C-tab与jedi:complete的绑定?的问题。 - Bleeding Fingers
我刚刚尝试了 emacs -qC-x o 可以工作。其他的按键绑定都不能用吗? - abo-abo
我不知道为什么,在我的情况下,没有任何键绑定似乎能够工作(C-x oC-x C-fC-x k),即使使用 emacs -q 启动 emacs。迷你缓冲区也没有显示任何活动(例如,如果我按下 "C-x",它不会显示)。 编辑:如果我结束 ipython 进程(即在提示符处键入 "exit"),键绑定就会再次发挥作用。 - jmlorenzi
3个回答

0

你发布的代码,但是使用 ansi-term 替代:

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

0

只是为了让你知道可以使用 M-x shell 与 ipython:

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

但是现在的制表符自动完成功能不起作用了。也许有解决方法,我不确定。

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


我不知道你的意思是否是这样,但我可以使用 C-c C-j 从你的原始答案中恢复 IPython shell 的正常按键绑定。然而,在 term-line-model 模式下,TAB自动补全无法工作。个人而言,我更喜欢使用 M-x shell,并希望有一个像它一样工作的 IPython 缓冲区,但这是目前的一个好解决方案。 - jmlorenzi

0
也许可以尝试一下 python-mode.el。使用 M-x ipython RET 应该就可以了。

我使用python-mode.el得到的ipython终端无法正确处理TAB补全... - jmlorenzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接