Sublime Text自定义自动填充

时间:2018-03-13 14:18:54

标签: sublimetext3

我正在尝试将自己的autocompelte单词添加到sublime文本中,但它似乎无法正常工作。

我从中得到了一些帮助 http://docs.sublimetext.info/en/latest/reference/completions.html

并将我的自动完成代码写为:

{
    "scope": "source.cpp",
    "completions":
    [
    { "trigger": "cout", "contents": "std::cout << $1" },
    { "trigger": "endl", "contents": "<< std::endl $1" },
    { "trigger": "cin", "contents": "std::cin >> $1" }
    ]
}

我希望每次都将cout替换为std::cout

有人可以告诉我如何纠正这个问题吗?

该文件名为cpp.sublime-completions,位于

/home/user/.config/sublime-text-3/Packages/User

1 个答案:

答案 0 :(得分:1)

您的整体问题是C ++文件的顶级范围不是source.cpp,而是source.c++。因此,如果定义您的完成功能不起作用,因为Sublime没有意识到它应该应用它们。

您可以使用菜单中的Tools > Developer > Show Scope Name或按下菜单中显示的相关键盘快捷键来检查任何给定点的范围。

另外需要注意的是,当您在此处使用仅包含单个占位符变量的片段/完成时,您可能需要将$1替换为{{1} }}

Sublime按数字顺序在完成字段中移动,要求您按 Tab 转到下一个字段,然后按 Tab 最后一个字段&#34;退出&#34;通过将光标跳到$0点(如果您没有明确指定它,则假定为片段中的最后一项)。

如您的示例中所定义,如果您触发示例$0,则光标将位于cout上,并且您将在状态行中看到$1以提醒您你在一个片段中。键入占位符后,必须按 Tab Esc 才能将片段退回正常编辑模式(各种光标操作也会取消片段模式)同样)。

这可能是你想要的,但如果你不期待它,它也会导致奇怪的莫名其妙的问题(例如,当你按<时,无法立即扩展片段或光标跳到其他地方KBD>标签)。