autocomplete - 如何在 Sublime Text 3 中添加自定义自动完成?

标签 autocomplete sublimetext sublimetext3 code-completion

如何在 Sublime Text 3 中添加自定义自动完成?

可能重复的问题是 here .

有一个很好的答案,但不是很完整。并阅读官方文档(Sublime Text 非官方文档 - 扩展 Sublime Text - completionssnippets ),我仍然想知道如何实现我自定义的 HTML 标签自动完成。

我想要的是下面的。

  • 当我放
    eq(+tab)
    

    , 我预计
    <eq>(Cursor)</eq>
    

    弹出。 (这对我单独保存的多个片段 .sublime-snippet 文件很有效。)
  • 当我放
    eq{\alpha \beta \int}(+tab)
    

    , 我预计
    <eq>\alpha \beta \int(Cursor position)</eq>
    

    弹出。在这种情况下, '\' 被转义,光标位置在开头,以便
    <eq>(Cursor position)alpha beta int</eq>
    

    弹出。奇怪和不舒服的结果是,因为我想在这个标签中渲染“TeX”方程,即数学。
  • 当我放
    eqq(+tab)
    

    , 我预计
    <eqq>
    (tab indented)(Cursor)
    </eqq>
    

    弹出。 (这对我单独保存的多个片段 .sublime-snippet 文件很有效。)
  • 当我放
    eqq{\alpha \beta \gamma \frac{1}{2}}(+tab)
    

    , 我预计
    <eqq>
        \alpha \beta \gamma \frac{1}{2}(cursor position at the end of Tex Equation)
    </eqq>
    

    弹出。在这种情况下, '\' 也被转义,并且没有添加 '\n\t'(换行符,制表符),以便
    <eqq>(cursor position)alpha beta gamma frac{1}{2}</eqq>
    

    弹出。和
    eqq{}(+tab)
    

    变成
    <eqq>(Cursor position)</eqq>
    

    .不像 eqq(+tab) , 没有 '\n\t'。

  • 实现这些自动完成的最简单方法是创建 HTML.sublime-completions文件在 Sublime Text Build 3059 x64\Data\Packages\User文件夹。 (因为我在 Windows 操作系统中使用 ST3 的可移植版本,所以当你安装 ST3 时,文件夹可能会有所不同。)用 JSON 文本填充文件,如
    {
        "scope": "text.html - source - meta.tag, punctuation.definition.tag.begin",
    
        "completions":
        [
            { "trigger": "eq", "contents": "<eq>$1</eq>" },
            { "trigger": "eqq", "contents": "<eqq>\n\t$1\n</eqq>" }
        ]
    }
    

    .但是tab未启用触发,尽管我的 Preferences - Settings - User包括标签相关的功能,如
    {
        [
            "Vintage",
            "BracketHighlighter",
            "SideBarEnhancements"
        ],
        "tab_completion": true,
        "tab_size": 2,
        "translate_tabs_to_spaces": false,
        "use_tab_stops": false,
    }
    

    .只有 Ctrl+tab在这种情况下启用触发。怎么了?我不知道。

    为了解决这些问题,我尝试了 Snippets,制作 HTML.sublime-snippet文件在 Sublime Text Build 3059 x64\Data\Packages\User文件夹。我放
    <snippet>
        <content><![CDATA[<eqq>
        $0$1
    </eqq>]]></content>
        <tabTrigger>eqq</tabTrigger>
        <scope>text.html</scope>
    </snippet>
    <snippet>
        <content><![CDATA[<eq>$1$0</eq>]]></content>
        <tabTrigger>eq</tabTrigger>
        <scope>text.html</scope>
    </snippet>
    

    .在这种情况下,只有第一个 <snippet>已启用。所以我分别保存了多个片段文件。
    <snippet>
        <content><![CDATA[<eq>$0</eq>]]></content>
        <tabTrigger>eq</tabTrigger>
        <scope>text.html</scope>
        <description>eq tag to be rendered by MathJax</description>
    </snippet>
    

    eq.sublime-snippet文件,和
    <snippet>
        <content><![CDATA[<eq>$1$0</eq>]]></content>
        <tabTrigger>eq{$PARAM1}</tabTrigger>
        <scope>text.html</scope>
        <description>eq{inline TeX equation} tag to be rendered by MathJax</description>
    </snippet>
    

    eqBraces.sublime-snippet文件,和
    <snippet>
        <content><![CDATA[<eqq>
        $0
    </eqq>]]></content>
        <tabTrigger>eqq</tabTrigger>
        <scope>text.html</scope>
        <description>eqq tag to be rendered by MathJax</description>
    </snippet>
    

    eqq.sublime-snippet文件,和
    <snippet>
        <content><![CDATA[<eqq>
        $1$0
    </eqq>]]></content>
        <tabTrigger>eqq{$PARAM1}</tabTrigger>
        <scope>text.html</scope>
        <description>eqq{outline TeX equations} tag to be rendered by MathJax</description>
    </snippet>
    

    eqqBraces.sublime-snippet文件。但这些也不能完全解决我的问题。

    我也在sublime User Echo中问过这个问题.谁知道这个问题,请回答我。

    我试过类似 ${1/\\/\/} .但这也行不通。不舒服地使用双 \喜欢 eq{\\alpha \\beta \\gamma} ,我可以解决意外的逃逸\问题。

    最佳答案

    1- 如果您愿意,您可以随时为 sublime 文本添加插件。它叫做 Emmet,你可以在这里找到它 Emmet web page

    使用起来很简单,例如写 div + crtl + e 你会得到 <div></div> .另一种使用它的方法是把 div.tagId + crtl + e 和你会得到 <div id='tagId'> <div> ;如果你想要多个,你只需输入 div*2 和相同的键组合,你就会得到两个 div。

    对于其他问题,我不知道如何解决。

    关于autocomplete - 如何在 Sublime Text 3 中添加自定义自动完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191460/

    相关文章:

    django - 创建多值字段用于在用户配置文件 Django 中存储用户技能集

    ajax - MVC 5无效的JSON原语

    c - 如何让Sublime Text 3执行编写的程序?

    editor - 命令面板快捷方式在 Sublime Text 3 中不起作用

    git - 禁用 (GitGutter) 关于提交 Sublime Text 的消息

    javascript - Angular Material 6 中用于自动完成的无限滚动

    javascript - 如何获得像 Stack Overflow 这样的自动完成功能

    python - 带有代码完成功能的 python/django 的 Sublime Text 2 & 3 设置

    sublimetext2 - 双击以选择与中断相关的单词

    sql - Sublime Text : how to correct SQL Server syntax