【问题标题】:Atom Editor: multiple snippetsAtom 编辑器:多个片段
【发布时间】:2014-12-24 07:11:20
【问题描述】:

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

如何在 Atom 编辑器中拥有多个自定义 sn-ps:

例如,我现在的 sn-ps.cson 中有这个

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

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

但是cmm不起作用,我只能使用sn-ps.cson中的最后一项。有想法该怎么解决这个吗?我有大约十几个不同的 sn-ps 我想使用,但我不知道如何正确地包含它们。

【问题讨论】:

  • 您正在覆盖您的第一个 sn-p,因为您在数组中声明了相同的父键 '.source.js': 两次。如果您从第二个中删除'.source.js':,那么它将起作用。每组语言 sn-ps 应该只有一个 '.source.language':。否则,重复的父键将相互覆盖。

标签: code-snippets atom-editor


【解决方案1】:

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

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

另外,我冒昧地在你的 sn-ps 中添加了制表位,这样当你展开 sn-p 时,你的光标应该首先落在评论中。您可以输入您的评论,然后按 TAB 退出并继续。

【讨论】:

    【解决方案2】:

    除了@Lee的解释,如果你不想设置多个按编程语言组织的sn-ps,这里有一个例子:

    # 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、...

    希望这是有用的。

    【讨论】:

      【解决方案3】:

      在 Atom 中发现了一个带有多个 sn-ps 的奇怪错误。我希望这个答案可以帮助有同样问题的人(我使用的是 Atom 的 mac 版本)。所以我去添加一个新的 sn-p 到 sn-ps.cson 文件中,我复制了旧的 sn-p 并将其粘贴为这样的模板并保存它们,即使它们仍然相同 '.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"; """ 我在编辑了第二个 sn-p 后再次保存。这次第二个 sn-p 的选项卡展开不起作用,但第一个仍然有效。在玩弄了很多确保我有正确的语法之后,我尝试了一种预感,这可能是因为我保存了两个重复的 sn-ps,它以某种方式与 cson 输出混淆了。然后我删除了第二个sn-p,然后只保存了第一个,然后复制了第一个,然后更改了它,然后保存了它。毕竟两个sn-ps都正常工作。

      我一直在使用多个 sn-ps,直到现在才真正遇到这个问题。太奇怪了,但它就在那里。

      【讨论】:

      • 可笑的错误,同样的事情发生在我身上。试图让 sn-p 工作的疯狂搜索时间。感谢您发布此内容。
      • 4 f**ks 看在我早上的时间。谢谢。
      【解决方案4】:

      下一个 sn-p 以逗号开头,后跟换行,给出与第一个相同的结构对我有用。

      '.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': """
          /****************************************
          *
          *
          ****************************************/
      """
      

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,这里是解决方法:

        '.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. 在上一个定义的同一起始行开始下一个定义! 我真的不明白为什么它会这样工作.. 但是.. 就是这样。
        3. 使用“.source.PROGRAM LANGUAGE”:每种语言只使用一次。

        回家有帮助:)

        【讨论】:

          【解决方案6】:

          通过适当的缩进,你的 sn-ps 就可以正常工作了。不需要额外的逗号

          由于文件是 cson 格式,类似于 json 文件。你可以像下面这样写你的sn-ps。在哪里

          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'

          【讨论】:

            猜你喜欢
            • 2015-09-23
            • 2014-10-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-02-05
            • 2021-08-05
            • 1970-01-01
            • 2016-05-05
            相关资源
            最近更新 更多