完成文件“内容”必须是1行(没有换行符)吗?

时间:2013-08-14 14:52:33

标签: sublimetext sublimetext3

对于崇高文本的新功能,并尝试设置一些完成,因为我有一堆片段,我宁愿只使用1个文件,而不是每个代码段的单独文件。

当我保存下面的代码时,我收到错误,它无法解析文件,意外换行。我认为这是因为我正在使用换行符。完成仅适用于短1行代码吗?有什么可以做的,所以当我有更长的代码时,我不必使用单个文件的片段吗?

{
    "completions":
    [
            { "trigger": "clearforms", "contents":
                "//clear form fields
                \$(function() {
                    \$.fn.clearInput = function() {
                        return this.focus(function() {
                            if( this.value == this.defaultValue ) {
                                this.value = "";
                            }
                        }).blur(function() {
                            if( !this.value.length ) {
                                this.value = this.defaultValue;
                            }
                        });
                };

                    \$('#subscribe').clearInput();
                    \$('#search').clearInput(); 
                });"
            }
    ]

}

1 个答案:

答案 0 :(得分:2)

JSON不允许使用多行字符串 - 换行符需要编码为\n$符号需要像\\$一样进行双重转义,并且您的评论转发斜线单一转义 - \/\/。因此,您的完成文件需要如下所示:

{
    "completions":
        [
            { "trigger": "clearforms", "contents": "\/\/ clear forms \n\\$(function() { \n\\$.fn.clearInput = function() { \nreturn this.focus(function() { \nif( this.value == this.defaultValue ) { \nthis.value = \"\"; \n} \n}).blur(function() { \nif( !this.value.length ) { \nthis.value = this.defaultValue; \n} \n}); \n}; \n\n\\$('#subscribe').clearInput(); \n\\$('#search').clearInput(); \n});" }
        ]

}

我会在每次换行后把它放到适当的空白处。我应该注意,虽然单个片段文件可能稍微“杂乱”,但它们允许多行条目而不需要换行符,这样您就可以更轻松地格式化输出。但是,$和可能的JS注释可能需要转义。