Atom Editor:多个片段

时间:2014-10-28 18:28:30

标签: code-snippets atom-editor

这是一个非常简单的问题,但除了自述文件之外,我找不到任何文档。

如何在Atom Editior中拥有多个自定义代码段:

例如我现在在我的snippets.cson中有这个

'.source.js':
  'Normal Comment Block':
    'prefix': 'cmm'
    'body': """
      //**********************************************************************************
      //
      //**********************************************************************************
    """

'.source.js':
  'Dashed Comment Block':
    'prefix': 'c--'
    'body': """
      //----------------------------------------------------------------------------------
      //
      //----------------------------------------------------------------------------------
    """

但是cmm不起作用,我只能使用snippets.cson中的最后一项。有想法该怎么解决这个吗?我有十几种不同的片段我想使用,但我无法弄清楚如何正确包含它们。

6 个答案:

答案 0 :(得分:44)

配置文件格式称为CSON,CoffeeScript Object Notation。与JSON(JavaScript Object Notation)一样,它是用于描述简单对象的文本格式。因此,当您指定键两次时,例如示例中的.source.js,第二个实例将覆盖第一个键。如果您只有一个.source.js,一切都会正常工作:

'.source.js':
  'Normal Comment Block':
    'prefix': 'cmm'
    'body': """
      //**********************************************************************************
      // $1
      //**********************************************************************************
      $0
    """
  'Dashed Comment Block':
    'prefix': 'c--'
    'body': """
      //----------------------------------------------------------------------------------
      // $1
      //----------------------------------------------------------------------------------
      $0
    """

此外,我冒昧地在您的代码段中添加制表位,以便在展开代码段时,您的光标应首先位于注释中。您可以输入评论,然后按 TAB 退出并继续。

答案 1 :(得分:10)

除了@ Lee的解释之外,如果你不想设置由编程语言组织的多个片段,这里有一个例子:

# HTML Snippets
'.text.html':
  'HTML Comment':
    'prefix': '<!'
    'body': '<!-- $1 -->'

# Sass Snippets
'.source.scss':
  'Section Comment':
    'prefix': 'sc'
    'body': """
      /*=================================================
      $1
      =================================================== */
    """
  'Sub Section Comment':
    'prefix': 'ssc'
    'body': """
      /* $1
      =================================================== */
     """

# JavaScript Snippets
'.source.js':
  'jQuery - Bind Event':
    'prefix': 'bind'
    'body': """
       $( $1 ).on( '$2', '$3', function( $4 ) {
         $5
       });
    """

在这个例子中,我包括HTML,Sass和Javascript,但你可以包括其他像CSS,...

希望这很有用。

答案 2 :(得分:4)

在Atom中发现了一个包含多个片段的奇怪错误。我希望这个答案可以帮助有同样问题的人(我使用的是Atom的mac版本)。所以我去snippets.cson文件中添加了一个新片段,我复制了旧片段并将其粘贴在下面作为这样的模板并保存,即使它们仍然是相同的 '.source.php': 'Debug': 'prefix': 'prepr' 'body': """ echo "<pre>",print_r($_POST, 1),"</pre>"; die(); """ 'Debug': 'prefix': 'prepr' 'body': """ echo "<pre>",print_r($_POST, 1),"</pre>"; die(); """ 保存后我编辑了第二个,以获得不同的标题,前缀和正文代码 '.source.php': 'Debug': 'prefix': 'prepr' 'body': """ echo "<pre>",print_r($_POST, 1),"</pre>"; die(); """ 'different': 'prefix': 'different' 'body': """ echo "different"; """ 编辑完第二个片段后我再次保存。这次第二个片段的标签展开不起作用,但第一个片段仍然可以正常工作。经过多次愚弄,确保我有正确的语法,我尝试了预感,可能因为我保存了两个重复的片段,它以某种方式与cson输出混乱。然后我删除了第二个片段,然后只保存了第一个片段,然后复制了第一个,然后更改了它,然后保存了它。毕竟两个片段都正常工作。

我一直在使用多个代码片段,直到现在才真正遇到过这个问题。很奇怪,但确实如此。

答案 3 :(得分:0)

使用逗号后跟新行开始下一个片段,给出与第一个相同的结构。

'.source.php':
'var dump':
'prefix': 'vd'
'body': """
    echo "<pre>";
    var_dump($);
    echo "</pre>";
""",

'this->db':
'prefix': 'trans'
'body': """
    $this->db->trans_start();
""",

'comment block':
'prefix': 'cm'
'body': """
    /****************************************
    *
    *
    ****************************************/
"""

答案 4 :(得分:0)

我有同样的问题,这是修复:

'.source.js':
  'First function':
    'prefix': 'first'
    'body': """
    function $1() {
      var overall = true;
      if (overall)
      {
        var result = {};
        result.test1 = "";
        return test2(result);
      }
      return catched("");
    } """,

  'Next function':
    'prefix': 'next'
    'body': """
    function $1(result) {
      var overall = true;
      if (overall)
      {
        result.test1 = "";
        return test2(result);
      }
      return catched("");
    } """,

  'Next next function':
    'prefix': 'pz'
    'body': """
    function $1(result) {
      var overall = true;
      if (overall)
      {
        result.test1 = "";
        return test2(result);
      }
      return catched("");
    } """

请注意,您必须做以下几件事:

  1. 在每个“”“之后添加逗号(,)。
  2. 在prev define的同一起始行中开始下一个定义! 我真的不明白为什么它会那样......但是......就是这样。
  3. 使用'.source.PROGRAM LANGUAGE':每种语言只使用一次。
  4. 主页有帮助:)

答案 5 :(得分:0)

通过适当的缩进,您的代码片段将可以正常工作。不需要多余的逗号

由于文件的格式类似于json文件,因此为cson格式。您可以按照以下方式编写代码段。哪里

  1. 每个范围(例如下面的“ .source.js”)只能声明一次。
  2. 第二行是标题。
  3. 第三行是键盘快捷键。
  4. 第四行是要写在引号内的实际代码。

'.source.js':
  'Console log':
    'prefix': 'cl'
    'body': 'console.log($1)'

  'log error':
    'prefix': 'cle'
    'body': 'console.log(err)$1'

  'log data':
    'prefix': 'cld'
    'body': 'console.log(data)$1'