4

Atom で新しく作成されたファイルは常に「プレーン テキスト」です。これを変更して、新しいファイルが自動的に別の言語、たとえば「シェル スクリプト (Bash)」になるようにするにはどうすればよいですか? プレーン テキスト ファイルでは自動インデントが機能しないため、これを行いたいと考えています。

4

5 に答える 5

7

この問題もありましたが、これを行うdefault-languageというプラグインがあります。

atom で default-language を検索し、その設定をインストールして開きます。Atom のデフォルトにする言語の名前を入力します。たとえば、シェル スクリプト (疑わしい場合は、言語選択メニューからコピー) を [デフォルトの言語] フィールドに入力します。次に拡張子のないスクリプト (またはシバン) を開くと、デフォルトで設定した言語になります。

于 2016-01-27T11:05:52.137 に答える
2

ファイルにマッピングを作成する必要がありconfig.csonます。

"*":
  core:
    customFileTypes:
      "source.shell": [
         "sh"
         "shell"
      ]

.sh および .shell ファイルをシェル スクリプト構文にマッピングします。

于 2016-11-18T07:08:32.143 に答える
2

まず、CTRL+SHIFT+L があなたの味方です。残念ながら、恒久的な解決策ではありませんが、知っておくと便利です。

もちろん、より恒久的な解決策を希望します。Atom の API の変更により、他のいくつかの回答は廃止されました。以下は、より最新のバージョンです。インスピレーションは最初にこのディスカッションから得られましたが、ここでの他の回答も同じ概念に従っているようです。

これを init.coffee ファイル ( File -> Open Your Init Script)に配置します。

extname = require("path").extname
fileTypes =
  ".wxs": "text.xml"
  ".wxi": "text.xml"
  ".wixobj": "text.xml"

nullGrammar = atom.grammars.selectGrammar("text.plain.null-grammar")
atom.workspace.observeTextEditors (editor) ->
  grammar = atom.grammars.selectGrammar(fileTypes[extname(editor.getPath())])
  editor.setGrammar grammar  if editor.getGrammar() is nullGrammar and grammar isnt nullGrammar

基本的に、ファイル タイプの配列と、それらを関連付ける文法 (AKA 構文の強調表示) を定義します。各エディターを見つけて、選択された文法が既にあるかどうかを調べます。そうでない場合は、見つけたらそれを与えようとします。

これに関して私が抱えていた 1 つの問題は、構文の強調表示が機能するのは、Atom を既に起動してからファイルを開いた場合に限られることです。Atom が起動するファイルを開くと (たとえば、お気に入りの OS のアイコンをダブルクリックすると)、ファイルを再度開くまで、そのファイルの構文が強調表示されません。

于 2015-01-26T15:11:16.830 に答える
1

このコードを見てください: (その後、'text.html.basic' を必要な構文に変更できます)

editor = atom.workspace.getActiveTextEditor()
cursor = editor.getLastCursor()
valueAtCursor = atom.config.get(cursor.getScopeDescriptor(), 'my-package.my-setting')
valueForLanguage = atom.config.get(editor.getRootScopeDescriptor('text.html.basic'), 'my-package.my-setting')

参照については、スコープ記述子 @ https://atom.io/docs/latest/advanced/scopes-and-scope-descriptorsを参照してください。

于 2014-12-18T09:51:40.570 に答える