【问题标题】:How to make Emacs Python mode generate TABs for indent?如何让 Emacs Python 模式为缩进生成 TAB?
【发布时间】:2011-10-04 12:14:55
【问题描述】:

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

很抱歉,如果在其他地方回答了这个问题:我没有找到它。

【问题讨论】:

    标签: python emacs


    【解决方案1】:

    您可以使用python-mode-hook~/.emacs 中定义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)))
    

    【讨论】:

    • 我尝试将它放在不同的地方,但无法正常工作。我的 emacs 安装似乎正在使用我想过黑客攻击的“python.el.gz”。我应该改用 python-mode.el 吗?
    • @Aaron:您可能确实让它工作了,但是由于 python.el 默认情况下每个级别只缩进 4 列,您还没有看到制表符的使用。我用更多解释更新了答案。
    【解决方案2】:

    可能需要在python模式下这样做:

    (setq indent-tabs-mode t)
    

    【讨论】:

      【解决方案3】:

      正如帖子的评论者所说,使用制表符缩进是个坏主意,使用非标准制表符宽度更糟糕。尽管如此,如果您想合作,有时您别无选择。

      根据您的同事对 vim 的具体配置方式,您可能需要两者打开 indent-tabs-mode 并将 tab-width 设置为 4。

      使用file local variables 是一种不会弄乱您其他工作的便捷方法。在每个有问题的文件的末尾,写上:

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

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

      【讨论】:

      • 就我个人而言,我不喜欢文件局部变量,尤其是在您合作的情况下。想象一下,如果每个用户使用不同的编辑器,文件会是什么样子,并且他们都认为为他们的个人编辑器包含不同的简介是合适的。废话。
      • 但是格式化设置是正确的放置文件!你投票支持打破风格吗?
      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 2012-10-05
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多