在CSON中转义换行符

时间:2017-02-26 20:33:42

标签: special-characters atom-editor code-snippets

因此,当我使用Atom文本编辑器时,我经常使用Snippets。它们写在.cson这样的文件中:

'.source.cpp':
  'cout':
    'prefix': 'cout'
    'body': 'std::cout << "${1:/* message */}" << \n;$2'

现在,当我这样写时,Atom会将\n解释为换行符,而不是:

std::cout << "${1:/* message */}" << \n

我明白了:

std::cout << "${1:/* message */}" <<

(自动插入新行)

如何将\n视为一串文字?

2 个答案:

答案 0 :(得分:2)

你需要使用4个反斜杠来完成这项工作。

'.source.cpp':
  'cout':
    'prefix': 'cout'
    'body': 'std::cout << "${1:/* message */}" << \\\\n;$2'

这在编辑器中扩展为:

std::cout << "/* message */" << \n;

我对Atom的内部结构不够熟悉,无法完全解释这一点,但它可能会在加载cson文件时导入一次(导致\\n)然后再次插入在插入期间(产生最终输出字符串\n)。

答案 1 :(得分:0)

要正确转义\n,您必须在单行字符串中使用\\n。但请注意,CSON还支持多行字符串,这通常更适合维护。

示例:

body: """
  std::cout << "${1:/* message */}" <<
  $0
"""

$0制表符始终排在最后,但$2没有任何问题。