禁用 Emacs Jedi
我在osx上用Emacs 24.3成功运行了JEDI。它的自动补全功能非常棒,但有一个问题,就是当我想要注释代码时就不太好用了!我经常需要注释或取消注释代码的某些部分,希望能找到一种方法,让JEDI在我输入#的时候不要自动补全。任何建议或想法都非常感谢!
补充说明:当我想要注释多行代码时,通常会输入#,然后按下向下箭头和向左箭头,但启用JEDI后,通常会弹出一个对话框,阻止我移动到下一行,直到我做出选择:

3 个回答
这里是emacs-jedi的开发者。如果emacs-jedi的表现如你所说,那就是个bug。
不过,基于我掌握的信息,我无法确定具体问题所在。所以,我给你一些一般性的建议:
首先,一定要在一个干净的Emacs环境中尝试重现这个问题,具体方法可以参考这里 http://tkf.github.io/emacs-jedi/latest/#quick-try
这样可以帮助你判断是你的设置有问题,还是emacs-jedi本身的bug。
提供一下
M-x jedi:show-version-info
的输出结果。 http://tkf.github.io/emacs-jedi/latest/#jedi:show-version-info这有助于别人诊断问题。
根据你的截图,我猜测你可能使用了旧版本的popup.el。如果你同时安装了它和auto-complete.el,后者也可能是旧版本。如果在干净的Emacs环境中(我上面提到的第一步)没有看到问题,那么更新这些库可能会解决问题。
更新
我找到了一种方法,可以重现你提到的那种行为: https://github.com/tkf/emacs-jedi/issues/147
但正如我在问题中所写的,我认为这是一种罕见的情况。如果你发现了更常见的情况,请告诉我。
解决这个问题的一种方法是,选择你想要注释掉的代码行(区域),然后按下 M-;。这个操作会执行一个叫 comment-dwim
的命令,它会把你选中的区域注释掉(如果已经注释了,它会把它取消注释)。
如果你再配合使用比如 mark-lines
这个工具,它可以让你通过按一个键就选中当前行,这样就能非常快速地注释或取消注释你的代码,即使只是涉及一两行代码。
你可以试试用 company-jedi 这个工具来完成你的Python代码。这个工具没有你遇到的问题。