Emacs文本模式下IPython无制表符完成

Emacs文本模式下IPython无制表符完成,emacs,ipython,tab-completion,linux-mint,Emacs,Ipython,Tab Completion,Linux Mint,当我以文本模式在emacs内部运行IPython时(即在终端内部),我不会得到任何选项卡完成。它不是给定制表符完成,而是跳转四个空格 当我在正常GUI模式下运行emacs时,有一个很好的选项卡完成 有没有办法解决文本模式的问题 我正在使用Linux Mint 15、Emacs 24.3和IPython 1.1.0 (eval-after-load "python" '(define-key inferior-python-mode-map "\t" 'python-shell-complet

当我以文本模式在emacs内部运行IPython时(即在终端内部),我不会得到任何选项卡完成。它不是给定制表符完成,而是跳转四个空格

当我在正常GUI模式下运行emacs时,有一个很好的选项卡完成

有没有办法解决文本模式的问题

我正在使用Linux Mint 15、Emacs 24.3和IPython 1.1.0

(eval-after-load "python"
  '(define-key inferior-python-mode-map "\t" 'python-shell-completion-complete-or-indent)

如果这对您有效,您可能会遇到配置错误的问题,导致无法在设置中正确加载python模式。

启动IPython不是从纯shell,而是从python模式

例如,M-x使用附带的python.el运行python RET,并相应地定制了
python shell解释器


分别。M-x IPython RET with python mode.el最近我遇到了同样的问题,经过一些搜索,我发现这个问题是由
选项卡之间的差异造成的。Emacs wiki有一个页面描述了差异:


在my python.el中,
pythonshell completion complete或indent
绑定到
,这对GUI很好,但对CLI不起作用。将绑定更改为
选项卡
将解决此问题。

终端中是否有正确的python语法突出显示?否则,emacs可能无法检测到这是一个python文件。如果systax高亮显示正确,那么C-h k选项卡的输出是什么(基本上,密钥绑定到什么)也可以在消息缓冲区中查找您在GUI模式下未收到的任何错误或警告感谢您的回复。我做了C-h-k标签。在文本模式下我得到:
TAB运行命令indent for TAB command,这是一个交互式的
,在GUI模式下我得到:
运行命令python shell completion complete或indent,这是python.el中的交互式编译Lisp函数。`我想这就是不同行为的原因。您确定在GUI和终端案例中运行相同的Emacs吗?也许您的$PATH设置不同?这就是我在Emacs中启动IPython的方式。我正在使用Emacs附带的python.el。@dYz好的,看看这个键在默认情况下不是按您需要的方式设置的。这确实有效。但它在启动时返回一个错误:
Symbol作为变量的值为void:pythonshellcompletion complete或indent
@dYz IMO define需要一个引号:'(define key,因此在阅读时不会对其进行计算。顺便说一句,current python.el确实以这种方式设置了TAB,可能只是升级而已。根据@AndreasRöhler commentThank!进行了修复,这很有帮助。看起来我使用的是Emacs 24.2中的python.el,而不是24.3中的python.el。