如何使Emacs Python模式为缩进生成TAB?

时间:2011-07-13 13:23:57

标签: python emacs

我正在与一群使用vim的Python程序员合作,他们使用TAB进行缩进。我使用带有python-mode的Emacs,它将tab键转换为4个空格(就像它应该,但没关系)。由于我不想造成麻烦,我想在我的.emacs文件(或其他)中添加一些内容,以使用真正的TABS进行缩进,而不是将它们转换为空格。怎么样?

如果在其他地方得到回答,我很抱歉:我没找到。

3 个答案:

答案 0 :(得分:10)

您可以使用~/.emacspython-mode-hook中定义特定于Python的设置。要使用制表符进行缩进,您可以使用:

(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)))

答案 1 :(得分:1)

可能需要在python模式下执行此操作:

(setq indent-tabs-mode t)

答案 2 :(得分:0)

正如帖子的评论者所说的那样,使用标签进行缩进是一个坏主意,使用非标准标签宽度会更糟。尽管如此,如果你想合作,有时你别无选择。

根据您的同事配置vim的确切方式,您可能需要两个启用indent-tabs-mode并将tab-width设置为4。

执行此操作的便捷方法是使用file local variables,这不会弄乱您的其他工作。在每个违规文件的末尾,输入:

# Local Variables:
# indent-tabs-mode: 1
# tab-width: 4
# End:

(你必须告诉Emacs indent-tabs-mode是一个安全的局部变量。)