在 CSON 中转义换行符
Escaping new line character in CSON
所以当我使用 Atom 文本编辑器时,我经常使用 Snippets
。它们写在 .cson
文件中,如下所示:
'.source.cpp':
'cout':
'prefix': 'cout'
'body': 'std::cout << "${1:/* message */}" << \n;'
现在,当我这样写时,Atom 将 \n
解释为换行符,而不是:
std::cout << "${1:/* message */}" << \n
我得到:
std::cout << "${1:/* message */}" <<
(自动插入新行)
如何才能将 \n
视为一串文本?
您需要使用 4 个反斜杠才能完成这项工作。
'.source.cpp':
'cout':
'prefix': 'cout'
'body': 'std::cout << "${1:/* message */}" << \\n;'
这在编辑器中展开为:
std::cout << "/* message */" << \n;
我对 Atom 的内部结构不够熟悉,无法完整解释这一点,但可能是它在加载 cson 文件时插入了一次内容(导致 \n
),然后在插入期间再次插入(导致最终输出字符串 \n
).
要正确转义 \n
,您必须在单行字符串中使用 \n
。不过需要注意的是,CSON也支持多行字符串,这样往往更好维护。
示例:
body: """
std::cout << "${1:/* message */}" <<
[=10=]
"""
[=13=]
制表位总是在最后,但
没有任何问题。
所以当我使用 Atom 文本编辑器时,我经常使用 Snippets
。它们写在 .cson
文件中,如下所示:
'.source.cpp':
'cout':
'prefix': 'cout'
'body': 'std::cout << "${1:/* message */}" << \n;'
现在,当我这样写时,Atom 将 \n
解释为换行符,而不是:
std::cout << "${1:/* message */}" << \n
我得到:
std::cout << "${1:/* message */}" <<
(自动插入新行)
如何才能将 \n
视为一串文本?
您需要使用 4 个反斜杠才能完成这项工作。
'.source.cpp':
'cout':
'prefix': 'cout'
'body': 'std::cout << "${1:/* message */}" << \\n;'
这在编辑器中展开为:
std::cout << "/* message */" << \n;
我对 Atom 的内部结构不够熟悉,无法完整解释这一点,但可能是它在加载 cson 文件时插入了一次内容(导致 \n
),然后在插入期间再次插入(导致最终输出字符串 \n
).
要正确转义 \n
,您必须在单行字符串中使用 \n
。不过需要注意的是,CSON也支持多行字符串,这样往往更好维护。
示例:
body: """
std::cout << "${1:/* message */}" <<
[=10=]
"""
[=13=]
制表位总是在最后,但 没有任何问题。