Sublime Text C89 自动补全

Sublime Text C89 autocompletion

我正在使用 C89 标准中的 ST3 和代码。 超级有用的 for 循环自动完成完成为:

for (int i = 0; i < count; ++i)
{
    /* code */
}

但这不符合标准。是否可以在某些配置文件中更改此行为以完成:

int i = 0;
for (i < count; ++i)
{
    /* code */
}

?

您可以在此处的 Sublime Text 文档中找到如何添加特定的自动完成 - http://docs.sublimetext.info/en/latest/extensibility/completions.html。如果你已经有一个为你执行 C 自动完成的 Sublime Text 包,你可能必须禁用它。

这实际上是一个由 sublime 附带的 c++ 包提供的片段(由于它们的相似性,该包涵盖了 C 和 C++)。

负责自动完成的片段在Packages\C++\Snippets0-for-int-loop-(fori).sublime-snippet中,看起来像这个:

<snippet>
    <description>For Loop</description>
    <content><![CDATA[for (int ${2:i} = 0;  < ${1:count}; ${3:++})
{
    ${0:/* code */}
}]]></content>
    <tabTrigger>for</tabTrigger>
    <scope>source.c, source.objc, source.c++, source.objc++</scope>
</snippet>

您可以随意修改。为此,

  1. 为 sublime 安装 PackageResourceViewer。它可以让你查看 sublime 包的内部。
  2. 使用ctrl+shift+p打开命令面板
  3. 输入 prv:o 和 select PackageResourceViewer:从列表中打开资源
  4. 键入 C++ 并导航到 Snippets0-for-int-loop-(fori).sublime-snippet
  5. 将代码修改为

    <snippet>
         <description>For Loop</description>
         <content>
         <![CDATA[int ${2:i} = 0;
    for ( ${2:i} = 0;  < ${1:count}; ${3:++})
    {
         ${0:/* code */}
    }]]></content>
        <tabTrigger>for</tabTrigger>
        <scope>source.c, source.objc, source.c++, source.objc++</scope>
    </snippet>
    
  6. 并保存文件。