首页 > 解决方案 > 为什么 Atom 片段需要在其正文中一次使用四个反斜杠才能打印一个反斜杠

问题描述

我在设置片段时才意识到这一点。

'.source':
  'shrug':
    'prefix': 'shrug'
    'body': '¯\\\\_(ツ)_/¯'

为了打印典型的¯\_(ツ)_/¯耸肩,您需要 4 个反斜杠。使用 2 个反斜杠不会导致任何错误,但不会打印反斜杠。如果你为什么需要 2,我会理解它,但为什么需要 4?

标签: coffeescriptatom-editorbackslash

解决方案


atom 片段中的四个反斜杠是由于使用通用CSON表示法(Coffeescript 样式 JSON)的片段。

这篇评论很好地描述了atom-snippets repo中的一个问题

我认为四个反斜杠是有道理的,但在符号上不方便。

它与片段在进入文本缓冲区之前所经历的解释级别有关:

  1. 该片段在 CSON 文件中声明,这种格式的字符串元素的解析是“反斜杠敏感的”,即 \n 表示换行符,而 \ 表示为 .
  2. 然后必须由片段正文解析器解析该片段。解析器使用一个 \ 来转义后面的字符,例如 \ 变为 。所以过程如下:

    \ --CSON--> \ --BodyParser--> \

两个反斜杠过去起作用的原因是,代码段正文解析器从未真正处理转义字符(转义情况是显式处理的,而不是以通用方式处理的),这就是我们有 bug #60 的原因。

如果片段以自定义格式存储,则可以使该过程在符号上更加友好。然后我们可以更好地控制它的解析方式,例如在将反斜杠输入正文解析器之前不对其进行解释。


推荐阅读