Atom/vi - 空格处理不一致

Atom/vi - whitespace handling indiscrepencies

我正在为我的 IDE 选择寻找 TextMate 的替代品。我已经尝试了各种其他 IDE 并且开始喜欢 Atom,但我仍然遇到这个特别严重的问题。

一旦我们将项目推送到生产服务器,并且需要在服务器上通过 vi 进行编辑,白色 space 在 vi​​ 中总是比在图形中更严重 IDE .例如在 TextMate 中它看起来像:

function foo(){
    var bar;
    if($this)
         ...
    else
         ...
}

然后在vi中是这样的:

function foo(){
                var bar;
                if($this)
                        ...
                else
                        ...
}

似乎 TextMate 以不同的编码对白色space 字符进行编码,vi 认为这种编码比实际情况要丰富得多。几乎就像 vi 将图形 IDE 中的白色 space 加倍一样。这就是寻找另一个 IDE.

的全部原因

Atom 在这方面并没有那么糟糕,但它仍然存在类似的问题。在 Atom 中打开用 TextMate 编辑过的文件时,白色 space 也完全搞砸了。我们使用制表符缩进作为我们的内部编码约定,而不是两个 space 缩进。一旦我们确定了新的 IDE,这将不再是这样的问题,但我的问题是:

是否有需要调整的插件或设置,以便在 vi 和图形 IDE 中以相同的方式处理白色space?具体在 Atom

我对 IDE 的其他建议持开放态度,这些建议开箱即用并与 TextMate 或 Atom 具有相似的功能。我们还尝试了 Brackets、SublimeText 和其他一些工具。

您似乎在抱怨 left-margin 缩进宽度在编辑之间或您的团队成员(或可能两者)之间不一致。

对于这个问题,没有可以神奇应用的一揽子解决方案。不过,您可以尝试一些方法。

  1. 在您的团队中就如何进行缩进达成共识。

    如果您期望一致性,每个人都必须参与并同意这意味着什么。

  2. 在 space 上标准化缩进而不是制表符。

    制表符本质上是可变宽度的,因为每个人都可以选择如何显示它们。出于这个原因,您可以放弃它们并改用 space 缩进。代码将始终以相同的方式显示。

    有些人抱怨这个想法,说他们不想一直打 spacebar。但是现代文本编辑器会为您处理这个问题;你仍然可以使用你的 Tab 键,它工作得很好。

    在许多现代编辑器中,这称为 "soft tabs"。

    在 Vim 中,您可以使用类似

    的方式获得此效果
    :set tabstop=4 shiftwidth=4 softtabsstop=4 expandtab
    

    (用你自己的数字代替...2、8,无论你的团队同意什么。)

  3. 你可以试试EditorConfig.

    EditorConfig 允许您创建一个设置文件,编辑人员将使用该文件来配置各种内容,包括缩进。

    大部分编辑器都有插件,很方便。但是,它要求每个人都使用那些插件,这仍然需要共识,并且每个人都必须使用相同的配置文件(再次,共识)。

    一些团队将他们的 EditorConfig 文件放在他们的代码库中,以便于共享。

至于使用哪个编辑器/IDE,这确实与这个问题正交。每当涉及两个以上的文本编辑器或团队成员时,你就会遇到这个问题。