如何创建使用转义字符插入 \{\} 的片段?
How do I create a snippet that inserts \{\} using escape characters?
我正在尝试在 sublime text 中创建一个片段,当我按下 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": "\\{\\}"
}
},
原因解释如下:https://github.com/SublimeTextIssues/Core/issues/1878#issuecomment-328133400:
Due to compatibility with TextMate snippets, the following characters must be escaped to be literal:
\
, $
, {
, }
Any other \{CHAR}
will be produced verbatim. This explains why a single backslash is fine, but two become a single.
如果有帮助,您还可以在 ST 控制台中执行以下命令以查看 JSON 额外转义所产生的差异(例如,与 [=18 中的相同内容相比=] 文件):
view.run_command('insert_snippet', { 'contents': r'\{\}' })
我正在尝试在 sublime text 中创建一个片段,当我按下 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": "\\{\\}"
}
},
原因解释如下:https://github.com/SublimeTextIssues/Core/issues/1878#issuecomment-328133400:
Due to compatibility with TextMate snippets, the following characters must be escaped to be literal:
\
,$
,{
,}
Any other
\{CHAR}
will be produced verbatim. This explains why a single backslash is fine, but two become a single.
如果有帮助,您还可以在 ST 控制台中执行以下命令以查看 JSON 额外转义所产生的差异(例如,与 [=18 中的相同内容相比=] 文件):
view.run_command('insert_snippet', { 'contents': r'\{\}' })