Skip to main content
 首页 » 编程设计

带有硬制表符的 Spacemacs 中的 Python 缩进已关闭

2025年05月04日28artech

让我先说一下,我是一个相对较新的 emacs/spacemacs 从 vim 转换而来,所以我的知识仍然很基础。

我在 python 层设置了 spacemacs,在 dotspacemacs-additional-packages 中列出了额外的 dtrt-indent 包。和设置

(dtrt-indent-mode t) 

在 dotspacemacs/user-config.我需要 dtrt-indent,因为我正在处理几个项目(在 python 和 lua 中),我不是设置缩进规则的人。

此配置适用于具有不同长度软选项卡的 python 文件。此配置也适用于具有硬选项卡的 lua 文件。

当我打开一个用硬制表符缩进的 python 文件时,有些东西似乎搞砸了,它似乎认为缩进是两个硬制表符。意思是,如果我有这样的代码(假设 4 个空格是制表符):

def func():|  <--- Cursor 
    print 'line' 

然后按回车,我得到:

def func(): 
        |  <--- Cursor 
    print 'line' 

状态行打印 dtrt-indent 的消息说:

Note: indent-tabs-mode adjusted to t 

注意:如前所述,我是这方面的新手,我的 spacemacs 配置非常稀疏。我的用户配置中没有其他任何东西,我没有自定义层,除了 dtrt-indent 之外我什至没有任何其他包。

编辑:

python-indent-offset 设置为 8

indent-tabs-mode 设置为 t

制表符宽度设置为 4

请您参考如下方法:

尝试 M-x whitespace-mode 并重复这个实验。你看到了什么?您是使用空格还是使用制表符缩进?

我猜你会看到这样的东西:

def·func(): 
········ 
»   print·'line' 

这意味着您将 python-indent-offset 设置为 8,将 indent-tabs-mode 设置为 nil(也称为带空格的缩进),以及 tab-width 设置为 4.

如果不是这样,那么这些变量的值是多少(C-h v python-indent-offset 等)?

如果是这种情况,您可以通过运行来解决问题

(setq-default python-indent-offset 4)