64

Sublime Text 2 用に独自のスニペットを作成しようとしているときに、次の 2 つの問題に遭遇しました。

  1. スコープ キーを検索しています。パッケージを 1 つずつ調べて、宣言された「スコープ」プロパティへの参照を見つけることができることがわかりました。たとえば、~/Library/Application Support/Sublime Text 2/Packages/JavaScript/Comments.tmPreferences(私の HTML パッケージ内のファイル) には、次の 2 行があります。

    <key>scope</key>
    <string>source.js</string>
    

    したがって、現在のスニペットを JavaScript ファイルで動作させたい場合は、次のようにスコープを定義します。

    <scope>source.js</scope>
    

    これらのスコープ キーはすべて、インストールしたパッケージに基づいてオンザフライで定義されていると想定しています。Sublime Text は、私がより簡単に参照できる場所にリストを作成しますか? たくさんのパッケージ ファイルを調べるのは、あまりにも退屈に思えます。

  2. 複数のスコープ プロパティの定義。これは私が理解したことであり、次の行により、スニペットが HTML ファイルと JavaScript ファイルの両方で機能するようになります。

    <scope>text.html, source.js</scope>
    
4

5 に答える 5

144

Sublime Text 2 スニペットで使用するスコープのリストを次に示します -

ActionScript: source.actionscript.2
AppleScript: source.applescript
ASP: source.asp
Batch FIle: source.dosbatch
C#: source.cs
C++: source.c++
Clojure: source.clojure
CoffeeScript: source.coffee
CSS: source.css
D: source.d
Diff: source.diff
Erlang: source.erlang
Go: source.go
GraphViz: source.dot
Groovy: source.groovy
Haskell: source.haskell
HTML: text.html(.basic)
JSP: text.html.jsp
Java: source.java
Java Properties: source.java-props
Java Doc: text.html.javadoc
JSON: source.json
Javascript: source.js
BibTex: source.bibtex
Latex Log: text.log.latex
Latex Memoir: text.tex.latex.memoir
Latex: text.tex.latex
LESS: source.css.less
TeX: text.tex
Lisp: source.lisp
Lua: source.lua
MakeFile: source.makefile
Markdown: text.html.markdown
Multi Markdown: text.html.markdown.multimarkdown
Matlab: source.matlab
Objective-C: source.objc
Objective-C++: source.objc++
OCaml campl4: source.camlp4.ocaml
OCaml: source.ocaml
OCamllex: source.ocamllex
Perl: source.perl
PHP: source.php
Regular Expression(python): source.regexp.python
Python: source.python
R Console: source.r-console
R: source.r
Ruby on Rails: source.ruby.rails
Ruby HAML: text.haml
SQL(Ruby): source.sql.ruby
Regular Expression: source.regexp
RestructuredText: text.restructuredtext
Ruby: source.ruby
SASS: source.sass
Scala: source.scala
Shell Script: source.shell
SQL: source.sql
Stylus: source.stylus
TCL: source.tcl
HTML(TCL): text.html.tcl
Plain text: text.plain
Textile: text.html.textile
XML: text.xml
XSL: text.xml.xsl
YAML: source.yaml

何か不足している場合は、この要点https://gist.github.com/4705378に追加してください。

于 2013-02-04T07:39:11.560 に答える
77

カーソル位置の現在のスコープを表示

  1. スコープを知りたいファイルにカーソルを置きます。
  2. 次のキーボード ショートカットを使用します。

    Windows : ctrl+ shift+ alt+ p
    Mac: ctrl + shift+p

  3. 現在のスコープは、Windows のステータス バーの左側、または Mac のポップアップ ウィンドウに表示されます。

これらをファイルの<scope>キーとして使用しfoo.sublime-snippetます。

返されるスコープは、一般的なものから特定のものまでリストされています。スニペットをタブ トリガーで使用できるようにするのに最適なスコープを選択します。

于 2013-04-09T19:49:48.730 に答える
8

Isaac MuseによるScope Hunterというパッケージがあり、これは非常に役立ちます。

ドキュメント内の任意のカーソルの下にスコープを表示できます。これは、自分のスニペットをデバッグするときに非常に役立ちます。非常に詳細な場合もあります。私の最前面のドキュメントからのサンプルスコープ:

Scope: text.tex.latex
       meta.function.environment.list.latex
       meta.function.environment.general.latex
       meta.function.environment.math.latex
       string.other.math.block.environment.latex
       meta.group.braces.tex
       meta.space-after-command.latex

(読みやすいように折り返してあります)

SL2 をバラバラにするのに 1 週​​間も費やしたとしても、それを見つけることはできなかったでしょうが、このパッケージは数秒でそれを取得します。強くお勧めします。

この詳細レベルは、必要に応じて、非常に細かい方法でスニペットを定義できることも意味します。たとえば、は LaTeX のリストに広く対応しているため、リスト環境で super+enter を押すとmeta.function.environment.list.latexnew を挿入するスニペットがありますが、それ以外はありません。\item盲目的な当て推量よりもはるかに効果的にスニペットをターゲットにできます。

ソース コードはGithubあります。または、 Package Controlからインストールすることもできます。

于 2013-05-24T10:36:48.930 に答える
5

答えるには、#1、構文の.tmLanguageファイルを調べ、キーを探しますscopeName。これは、構文がスニペットのスコープ値に使用するものです。

たとえば、nathos/sass-textmate-bundleからの抜粋

<key>scopeName</key>
<string>source.sass</string>

したがってsource.sass、スニペットで使用します。

構文の定義に関する詳細は次のとおりです

于 2013-02-08T22:23:25.273 に答える