Atom - 强制标签宽度 2

Atom - Force Tab Width 2

我刚刚从 Sublime Text 切换到 Atom,以便完全开源。

我遇到了一些非常非常简单的问题:我希望 Atom 在任何情况下始终使用 (!) 制表符宽度 2 并将制表符替换为空格。此设置在 gedit 或 Sublime Text 中非常简单,但无论我在尝试什么:当我开始一个新文件时,制表符大小为 2(很好!)。当我使用现有文件时,制表符大小有时为 4。我觉得这有点烦人。

我在编辑器中的当前设置在屏幕截图中可见:

有多个选项卡设置

每个包(例如python-language)都有自己的选项卡设置。该语言是使用全局默认值还是它自己的默认值取决于创建包的人,但您通常可以覆盖它。

在您的屏幕截图中,您已将 "Tab Type" 设置为 "soft"。这将负责使用 spaces 而不是制表符。您已保留默认制表符宽度 2。这是您的全局设置。

现在,如果您查看 "Packages" 并搜索 "python",您将找到一个名为 "language-python" 的包。单击其设置按钮,您将找到许多 syntax-specific 设置。

  • Python语法
  • Python 控制台语法
  • Python 回溯语法
  • 正则表达式(Python)语法

这些语法中的每个 都有自己的制表符长度设置。您可以在此处将它们显式设置为 2 以覆盖包的默认值。 (您可能最关心第一个,Python 语法。)

Python不同

在Python的情况下,包被明确配置为默认为4spaces,可能是因为Python对whitespace非常自以为是,并且PEP 8 建议 4-space 缩进。您可以在包的来源中查看默认包设置:

https://github.com/atom/language-python/blob/master/settings/language-python.cson

'autoIndentOnPaste': false
'softTabs': true
'tabLength': 4

这会覆盖全局默认值。这就是为什么 Python 语法不像大多数包那样支持全局制表符宽度。

有时会有包覆盖

此外,由于语法原因,某些软件包会覆盖您的设置。例如,language-make 将覆盖并使用真正的制表符而不是 spaces,因为这是 make 所要求的。

在 Python 的情况下,有一个覆盖使用 spaces。 language-python 设置页面为您提供了更改缩进级别的位置,但它没有提供切换到使用制表符的方法。 (这可能是合理的,因为 Python 中的制表符和混合缩进是 difficult-to-debug 语法错误的一个非常常见的原因。)

您可能需要重新加载

最后,有时设置不会完全生效,直到您重新加载 Atom window。您可以使用 Window: Reload 命令来执行此操作。或者使用键盘:

  • Mac: CtrlOptCmdL
  • Windows/Linux: CtrlAltR

这对我有用。

  1. 禁用所有非默认包
  2. 打开 ~/.atom/config.cson,并追加这个(与“*”元素相同级别)

:

".python.source":
  editor:
    autoIndent: true
    tabLength: 2
  1. 重新启用所有包。

我从别人那里得到了帮助。不是我自己的发现。但是,为了保密,我不能引用来源。

根据 soham 的回答,我发现将 ~/.atom/config.cson(假设 osx)中的所有 tabLength: 字段设置为您想要的长度解决了问题。