Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sublimetext3 如何创建使用转义字符插入\{\}的代码段?_Sublimetext3_Key Bindings_Code Snippets - Fatal编程技术网

Sublimetext3 如何创建使用转义字符插入\{\}的代码段?

Sublimetext3 如何创建使用转义字符插入\{\}的代码段?,sublimetext3,key-bindings,code-snippets,Sublimetext3,Key Bindings,Code Snippets,我试图在升华文本中创建一个代码段,当我按下ctrl+shift+[它插入代码段\{\},但我在解决如何使用转义字符来执行此操作时遇到了问题 以下是我所拥有的: { "keys": ["ctrl+shift+["], "command": "insert_snippet", "args": { "contents": "\\{\\}" } } 但当我使用键盘快捷键时,它只插入{}而没有反斜杠!这很奇怪,因为当我将其更改为仅“\\”时,输出是\,

我试图在升华文本中创建一个代码段,当我按下ctrl+shift+[它插入代码段
\{\}
,但我在解决如何使用转义字符来执行此操作时遇到了问题

以下是我所拥有的:

{
    "keys": ["ctrl+shift+["], 
    "command": "insert_snippet", 
    "args": {
        "contents": "\\{\\}"
    }
}
但当我使用键盘快捷键时,它只插入
{}
而没有反斜杠!这很奇怪,因为当我将其更改为仅
“\\”
时,输出是
\
,但当两个反斜杠之后出现某些内容时,它会忽略反斜杠

我发现了一种使用ChainOfCommand包的排序方法,它可以像这样分别插入每个字符:

{ 
    "keys": ["ctrl+shift+["], 
    "command": "chain", 
    "args": {
        "commands": [
            ["insert_snippet", {"contents": "\\"}],
            ["insert_snippet", {"contents": "{"}],
            ["insert_snippet", {"contents": "\\"}],
            ["insert_snippet", {"contents": "}"}]
        ]
    }
}
但问题是,如果我执行ctrl-z撤消,它会一次删除每个字符,而不是删除整个代码段,这很烦人。而且,这只是原理,我相信我应该能够在一个代码段中完成


有人知道我该如何让它工作吗?

尽管看起来不直观,但使用以下键绑定将插入
\{\}

{
    "keys": ["ctrl+shift+["], 
    "command": "insert_snippet", 
    "args": {
        "contents": "\\\\{\\\\}"
    }
},
原因解释如下:

由于与TextMate代码段兼容,必须将以下字符转义为文字:

\
$
{
}

任何其他
\{CHAR}
都将逐字生成。这解释了为什么单个反斜杠可以,但两个反斜杠变为单个反斜杠

如果有帮助,您还可以在ST控制台中执行以下命令,以查看JSON额外转义的不同之处(例如,与
.sublime snippet
文件中的相同内容相比):


啊,好的,这是有道理的,所以你需要转义转义字符,然后转义
{
字符!我想看看是否可以用
“\\{\\\}”
转义字符,但它不起作用,我应该再转义一次!非常感谢你的帮助!如果你不想插入代码片段的话(也就是说,不要使用$1,$2,…)你也可以使用
insert
和“普通”json转义:
{“键”:[“ctrl+shift+[”],“命令”:“insert”,“args”:{“characters”:“\{\\}”},
啊,很酷,很高兴知道!非常感谢
view.run_command('insert_snippet', { 'contents': r'\\{\\}' })