emacs 修复 python 的制表符缩进

Posted

技术标签:

【中文标题】emacs 修复 python 的制表符缩进【英文标题】:emacs fix tab indentation for python 【发布时间】:2014-03-07 01:04:55 【问题描述】:

python 模式下的 Emacs 制表符缩进使用制表符而不是 4 个空格。

我的 emacs init.el 文件包含:

(setq-default indent-tabs-mode t)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)

我试过了:

(setq-default indent-tabs-mode nil)

但这并没有什么不同。 在 emacs 中使用 white-space 模式我看到选项卡不会缩进 4 个空格,untabify 将选项卡修复为 4 个空格。如何使 TAB 用作四个空格?

更新 通过将 init.el 配置更改为:

(add-hook 'python-mode-hook
      (lambda ()
        (setq-default indent-tabs-mode nil)
        (setq-default tab-width 4)
        (setq-default python-indent 4)))

【问题讨论】:

【参考方案1】:

如果要插入 TAB,indent-tabs-mode 必须为 `t'。在所示的钩子中更改它。 写

(setq indent-tabs-mode t)

似乎 python.el 有一个错误,当它与模式一起设置为 nil 时。由于钩子在模式初始化之后运行,它应该能够纠正这个问题。

如果没有,请尝试允许选择的 python-mode.el。 您还可以在每个缓冲区中显式设置 indent-tabs-mode,它由 python.el 设置为缓冲区本地。

【讨论】:

【参考方案2】:

虽然已经很晚了,但跟随钩子对我有用。 只有空格

(add-hook 'python-mode-hook
      (lambda ()
        (setq indent-tabs-mode nil)
        (setq python-indent 4)
        (setq tab-width 4))
      (untabify (point-min) (point-max)))

只有标签

 (add-hook 'python-mode-hook
          (lambda ()
            (setq indent-tabs-mode t)
            (setq python-indent 4)
            (setq tab-width 4))
          (tabify (point-min) (point-max)))

【讨论】:

以上是关于emacs 修复 python 的制表符缩进的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Spyder 上的缩进/制表符问题

Emacs - 本地 Python 变量的制表符补全

如何使 emacs 的行为更接近常规编辑器?

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

Python对缩进制表符和空格的解释

你的 .emacs 里有啥?