如何让Emacs的Python模式生成制表符进行缩进?
我正在和一群使用vim的Python程序员一起工作,他们在写Python代码时使用TAB键来缩进。而我使用的是Emacs编辑器,里面的python-mode会把TAB键转换成4个空格(这其实是正确的做法,不过先不提这个)。因为我不想制造麻烦,所以我想在我的.emacs文件(或者其他地方)里加点东西,让它在缩进时使用真正的TAB,而不是把它转换成空格。请问该怎么做?
如果这个问题在别的地方已经回答过,我很抱歉,我没有找到。
3 个回答
0
正如帖子里的评论者们所说,使用制表符(tabs)来缩进代码其实是个坏主意,而使用不标准的制表符宽度就更糟了。不过,有时候如果你想和别人合作,就没办法了。
根据你同事的vim设置,你可能需要同时开启 indent-tabs-mode
和把 tab-width
设置为4。
有个方便的方法可以做到这一点,而且不会影响你其他的工作,那就是使用 文件本地变量。在每个有问题的文件的末尾,添加以下内容:
# Local Variables:
# indent-tabs-mode: 1
# tab-width: 4
# End:
(你需要告诉Emacs indent-tabs-mode
是一个安全的本地变量。)
3
可能需要在Python模式下进行这个操作:
(setq indent-tabs-mode t)
17
你可以在你的 ~/.emacs
文件里设置一些专门针对Python的选项,使用 python-mode-hook
。如果你想用制表符(也就是Tab键)来进行缩进,可以这样做:
(add-hook 'python-mode-hook
(lambda () (setq indent-tabs-mode t)))
默认情况下,python.el
的缩进是4个空格,所以上面的设置会在缩进是8的倍数时使用制表符,而在其他情况下则用制表符加空格的方式来缩进。
如果你希望每个缩进级别都用一个制表符,那么你还需要把 python-indent
设置为8。这样,你就可以把 tab-width
设置为你希望看到的制表符宽度。
(add-hook 'python-mode-hook
(lambda ()
(setq indent-tabs-mode t)
(setq python-indent 8)
(setq tab-width 4)))