9

実行可能なスクリプトや、共通言語 (Python など) を使用する宣言型構成ファイルを作成する場合、ファイル名に拡張子を追加するのは望ましくないことがよくあります。多くの構文強調テキスト エディタ (Geany など) は、その後、ファイルの種類を自動的に判別できません。

ファイル内のソースの種類を編集者に示す標準的な方法はありますか?

4

3 に答える 3

20

Vim

Vimにはモードラインと呼ばれる概念があります。モードラインは、テキストファイルの最初または最後の5行内にある特別にフォーマットされた行であり、:setlocalローカル変数を使用できます。たとえば、Cの場合:

 /* vi: set filetype=c fileencoding=UTF-8 shiftwidth=4 tabstop=4 expandtab */

またはRuby:

 # vi: set filetype=ruby fileencoding=UTF-8 shiftwidth=2 tabstop=2 expandtab

さらにいくつかのドキュメント

Emacs

Emacsには、ファイル変数と呼ばれる同様の概念があります。

ファイル変数は、ファイルの先頭(最初の行、またはシバン行がある場合は2番目の行)で次の形式で指定されます。

/* *-* mode: cc c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil *-* */

または最後に:

# Local Variables:
# mode: ruby
# coding: utf-8
# c-basic-offset: 2
# tab-width: 2
# indent-tabs-mode: nil
# End:

jEdit

jEditはこのバッファローカルプロパティを呼び出します。最初または最後の10行以内に座って、次のようにする必要があります。

# :mode=ruby:indentSize=2:tabSize=2:noTabs=true:

jEditは、モード検出のフォールバックとしてシバンラインも使用します。

コモド編集

Komodo Editにモードラインサポートを追加するKomode (しゃれを意図した)と呼ばれるプラグインがあります:

# komode: le=unix language=ruby codepage=utf8 tab=2 notabs indent=2

また、Vimモードラインの限られたサブセットも理解します。

その他

他の多くのエディターも、これの独自のバリエーションを持っているか、上記の1つ(通常はVim)をサポートしています。

Python/Rubyエンコーディング

Ruby 1.9とPythonはどちらも、非ASCIIソースファイルのエンコーディングを明示的に指定する必要があります。幸いなことに、彼らはEmacsとVimの両方のモードラインと互換性のある方法でこれを行っています。(基本的に、文字列、単語以外の文字、空白、有効なエンコーディング名を探しますcoding。Vimfileencoding=とEmacsはどちらもcoding:これらの要件を満たしています。)

Modelineジェネレーター

これは、Vim、Emacs、jEditのモードラインを生成する単純なモードラインジェネレーターです。

于 2009-12-31T12:38:13.673 に答える
8

通常、シバン ラインはフォールバックとして使用されます。

たとえば、拡張子のない Ruby スクリプトは次のように始まります。

#!/usr/bin/env ruby
于 2009-12-31T05:39:16.140 に答える
0

非標準のシバンを使用している場合、これは多くの編集者に有効です。

#!/usr/bin/env python3
# filetype=python
于 2011-03-18T15:46:38.860 に答える