为何Atom代码片段需在主体中用四个反斜杠才能输出单个反斜杠
为什么Atom代码片段里输出反斜杠需要四个反斜杠?
这其实是双重转义的问题,咱们一步步拆解就清楚了:
第一层转义:CSON格式本身的要求
Atom的代码片段文件(snippets.cson)是用CSON(CoffeeScript Object Notation)编写的,它和JSON类似,反斜杠是特殊的转义字符。如果你想在CSON里表示一个真实的反斜杠,必须用两个反斜杠(\\)——这就像在JSON里写"\\"才能得到一个\一样。第二层转义:Atom代码片段引擎的解析
当Atom读取你的代码片段并准备插入到编辑器时,它会再次解析body里的内容,因为片段引擎支持自己的转义规则(比如用\$表示真实的$,避免和占位符冲突)。这时候,如果CSON解析后给片段引擎的是单个\,它会把这个\当作转义前缀,吃掉后面的字符(比如\(会被解析成普通的(),而不会输出反斜杠本身。
所以要最终得到一个真实的反斜杠,你需要:
- 先让CSON解析出一个
\\(也就是写四个\\\\) - 然后片段引擎把
\\解析成单个\
举个例子,正确的代码片段应该写成:
'.source': 'shrug': 'prefix': 'shrug' 'body': '\\\\_(ツ)_/¯'
这样插入后就能得到正确的\_(ツ)_/¯耸肩表情了。
简单总结就是:反斜杠要经过CSON和Atom片段引擎两次转义,所以需要写四个才能最终得到一个。
内容的提问来源于stack exchange,提问作者King Natsu
相关产品推荐
相关产品推荐

