2

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

2 回答 2

2

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

(setq indent-tabs-mode t)

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

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

于 2014-03-07T07:30:46.660 回答
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)))
于 2016-10-14T16:07:22.297 回答