web-dev-qa-db-ja.com

Atomエディター:複数のスニペット

これはとても単純な質問ですが、readme以外のドキュメントは見つかりません。

Atom Editior:に複数のカスタムスニペットを含めるにはどうすればよいですか?

たとえば、私は今スニペット.csonにこれを持っています

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

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

しかし、cmmは機能しません。私は、snippets.csonの最後のアイテムしか使用できません。これを修正する方法についてのアイデアはありますか?使用したいスニペットが約12種類ありますが、それらを適切に含める方法がわかりません。

19
TheMcMurder

構成ファイルの形式は、CSON、CoffeeScript ObjectNotationと呼ばれます。 JSON(JavaScript Object Notation)と同様に、単純なオブジェクトを記述するためのテキスト形式です。そのため、例の.source.jsのようにキーを2回指定すると、2番目のインスタンスが最初のインスタンスを上書きします。 .source.jsが1つしかない場合は、すべて正常に機能します。

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

さらに、スニペットを展開するときにカーソルが最初にコメント内に移動するように、スニペットにタブストップを自由に追加しました。コメントを入力して、を押すことができます TAB 終了して続行します。

45
Lee

@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などの他のものを含めることもできます...

これがお役に立てば幸いです。

10
Sérgio

Atomで複数のスニペットを持つ奇妙なバグを見つけました。この答えが同じ問題を抱えている人に役立つことを願っています(私はMacバージョンのAtomを使用しています)。そこで、新しいスニペットを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(); """これを保存した後2番目のスニペットを編集して、タイトル、プレフィックス、本文コードを変更しました'.source.php': 'Debug': 'prefix': 'prepr' 'body': """ echo "<pre>",print_r($_POST, 1),"</pre>"; die(); """ 'different': 'prefix': 'different' 'body': """ echo "different"; """ 2番目のスニペットを編集した後、再度保存しました。今回は、2番目のスニペットのタブ展開は機能しませんでしたが、最初のスニペットは引き続き機能しました。正しい構文を持っていることを確認するために多くのことをいじった後、私はそれがどういうわけかcson出力を台無しにした2つの重複したスニペットで保存したためか、予感を試みました。次に、2番目のスニペットを削除し、最初のスニペットのみを含めて保存し、最初のスニペットを複製して変更し、保存しました。結局、両方のスニペットは正常に機能していました。

私はしばらくの間複数のスニペットを使用してきましたが、今までこの問題に実際に遭遇したことはありません。とても奇妙ですが、それはあります。

4
kiko carisse

私は同じ問題を抱えていました、ここに修正があります:

'.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'を使用します:言語ごとに1回だけ。

ホームそれは役立ちます:)

0
user8909781

次のスニペットをコンマで開始し、最初のスニペットと同じ構造を与えることで改行を続けます。

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