![emacs 在 python 模式下使用下划线自动完成行为](https://linux22.com/image/1348737/emacs%20%E5%9C%A8%20python%20%E6%A8%A1%E5%BC%8F%E4%B8%8B%E4%BD%BF%E7%94%A8%E4%B8%8B%E5%88%92%E7%BA%BF%E8%87%AA%E5%8A%A8%E5%AE%8C%E6%88%90%E8%A1%8C%E4%B8%BA.png)
在我的.emacs
我有以下代码行:
(modify-syntax-entry ?_ "." python-mode-syntax-table)
这样,像forward-word
和这样的命令backward-kill-word
就会在单词中的任何下划线处停止。这与默认行为不同,这是我想要的行为。问题是 thenauto-complete-mode
也以不理想的方式将下划线视为单词边界。例如,如果我有一个名为 的变量foo_var
,fo
然后我输入并尝试完成,它只会完成到 而foo
不是foo_var
。
在text-mode
和中,c-mode
行为正是我想要的,即运动遵循下划线,但auto-complete-mode
会跨它们完成。我需要在配置中更改什么才能auto-complete-mode
在 Python 中修复此问题?
答案1
我设法解决了我的问题。我对为python-mode
和加载的语法表进行了比较c-mode
(使用C-h s
)。我注意到在中c-mode
,下划线是一个符号字符(“_”),而在python-mode
下划线是一个标点符号(“。”)。因此,我只需将上述代码行更改为
(modify-syntax-entry ?_ "_" python-mode-syntax-table)