在 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=] 制表位总是在最后,但 没有任何问题。