13

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

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

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

在此处输入图像描述

4

3 回答 3

13

有多个选项卡设置

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

在您的屏幕截图中,您已将“选项卡类型”设置为“软”。这将处理使用空格而不是制表符。您已保留默认选项卡宽度 2。这是您的全局设置。

现在,如果你在“包”下搜索“python”,你会发现一个名为“language-python”的包。单击其设置按钮,您会发现许多特定于语法的设置。

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

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

Python 不一样

在 Python 的情况下,包被显式配置为默认为 4 个空格,可能是因为 Python 对空格非常固执,而PEP 8建议使用 4 个空格缩进。您可以在包的源代码中看到默认包设置:

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

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

这会覆盖全局默认值。这就是为什么 Python Grammar 不支持全局制表符宽度的原因,大多数包都是这样做的。

有时有包覆盖

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

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

您可能需要重新加载

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

  • 苹果电脑:CtrlOptCmdL
  • 视窗/Linux:CtrlAltR
于 2017-02-07T17:29:05.453 回答
2

这对我有用。

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

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

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

于 2017-07-05T18:57:16.530 回答
0

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

于 2019-06-23T05:31:38.883 回答