Sublime Text 2 补全

Sublime text 2 completions

在制作 *.sublime-completions 文件时,我发现 "bug" 是在输入长函数时出现的,例如:

one.two.three.four.five(One := One_var, Two := Two_Var);

因此,如果您键入整个函数:

"one.two.three.four.five" 然后按 Tab 键 - 它会毫无问题地粘贴另一部分函数。

但是,如果您键入 "one.two.thr" - 然后在弹出提示中看到该函数并点击 "Enter",它将替换为:

one.two.one.two.three.four.five(One := One_var, Two := Two_Var);

如何配置触发器以替换 "one.two.thr" 以更正函数格式?

这是我的触发器。

        { "trigger": "one.two.three.four.five", "contents": "${TM_CURRENT_LINE/(.*)/(one.two.three.four.five)/}(One := One_var, Two := Two_Var);" },

这不是错误,而是 Sublime Text 的默认设置。默认情况下,点被视为 word_separators。因此,每次键入 . 时,完成触发器都会被重置。

示例:

假设我们只有以下可用的补全:

{
  "trigger": "one.two.three",
  "contents": "one.two.three.four.five"
},
{
  "trigger": "two",
  "contents": "it_takes_two"
}

现在,让我们在 Sublime Text 中输入它们(| 标记光标位置!)

one|     -> will trigger "one.two.three.four.five"
one.|    -> new word, forgot about "one.two.three.four.five"
one.two| -> will trigger "it_takes_two"

在最后一种情况下,两个补全都将列在补全弹出窗口中,以模糊匹配“two”。但是,更接近匹配的“two”将具有更高的优先级。

要解决此问题,您可以在程序包设置或全局用户设置中编辑 word_separators 设置。默认情况下,该设置将以下字符视为单词分隔符:

 ./\()\"'-:,.;<>~!@#$%^&*|+=[]{}`~?

或者,您可以省略完成触发器中的点,例如使用 one-two-three 而不是 one.two.three.