＞知っていると便利な秀丸の機能

# 第II部〜知っていると便利な秀丸の機能
EditorConfig

## EditorConfig

秀丸エディタ Ver.9.00以降では「EditorConfig」に対応しています。

- 解説
  - EditorConfigを有効にする
- 補足
  - 設定ファイルの記述方法
  - マクロ関連

### [解説]

「EditorConfig」とは、さまざまなエディター や IDE で、コーディングスタイルを統一するための仕組みです。「.editorconfig」という設定ファイルを参照し、各プロジェクト毎やファイル毎にコーディングスタイルを設定できます。

詳細は「EditorConfigのwebサイト」を参照してください。

秀丸エディタで対応しているのは、以下になります。

- charset(ファイルのエンコード)
- end_of_line(改行コードの設定)
- indent_style(インデントの種類。タブコードを使うか、スペースを使うか)
- indent_size、tab_width(インデントのサイズ)
- trim_trailing_whitespace(保存するときに行末の空白除去)
- insert_final_newline(Ver.9.20以降 最後の行が改行で終わっていない場合、保存時に改行を追加するか)

#### EditorConfigを有効にする

「EditorConfig」を有効にするには「動作環境 - 環境 - editorconfig」を開き、「editorconfigの検出」にチェックを入れます。

- 「タブ幅等の体裁」は以下の設定が対象です。

  - indent_style(インデントの種類。タブコードを使うか、スペースを使うか)
  - indent_size、tab_width(インデントのサイズ)
  - trim_trailing_whitespace(保存するときに行末の空白を除去するか)
  - insert_final_newline(最後の行が改行で終わっていない場合、保存時に改行を追加するか)

  インデントの種類が変更になっても、既存の内容を変更することはありません。
  例えば、タブでインデントしてあったファイルを開いても、スペースに置換するようなことしません。ファイル編集時の設定が変わるだけです。

- 「エンコードの種類」は以下の設定が対象です。

  - charset(ファイルのエンコード)
  - end_of_line(改行コードの設定)

  エンコードを変更する場合は「内容を維持して変換」を行います。

- 上記2つのグループに対し、条件に一致した場合の動作を設定します。

  1. 「適用しない」
     .editorconfigの内容を無視します。

  2. 「適用せず、注目バーを自動表示」
     注目バーをクリックすると、適応させる項目が表示されます。
     適応すると、ファイルは「更新」状態になります。

  3. 「適用して、注目バーを常に表示」
     注目バーを表示し、適応内容を表示します。

  4. 「適用する」
     確認なしで適用します。

  (3)と(4)の場合は、変更があってもファイルは「更新」状態になりません。

適用したインデントの設定が、元の「ファイルタイプ別の設定」と異なっても、「一時的な設定」にはなりません。

- ファイル構成の例。

      base
      ┣.editorconfig ()
      ┃ root = true
      ┃ [*.txt]
      ┃ end_of_line = crlf
      ┃
      ┣file1.txt
      ┃
      ┗folder1
        ┣file1-1.txt
        ┃
        ┗folder2
          ┃
          ┣.editorconfig (root = false)
          ┃ root = false
          ┃ [*]
          ┃ end_of_line = crlf
          ┃ [*.txt]
          ┃ end_of_line = lf
          ┃
          ┗file2-1.txt

  「editorconfigの検出」が有効な場合、開いたファイルのあるフォルダを起点として、上方向に「.editorconfig」を検索します。ドライブのルートフォルダにたどり着くか、「root = true」の記述がある「.editorconfig」が見つかるまで検索します。

  - 「file1-1.txt」を開いた場合、上方向へ検索を開始するので、「base」にある「.editorconfig」が有効です。
  - 「file2-1.txt」を開いた場合、同じフォルダにある「.editorconfig」と、「base」にある「.editorconfig」の両方が有効です。

  複数の「.editorconfig」が見つかり、設定が重複している場合は対象のファイルに近い「.editorconfig」の内容が優先されます。

  - 「file2-1.txt」を開いた場合、同じフォルダに「.editorconfig」があるので、「end_of_line = lf」が適用される。

  「.editorconfig」内に複数のマッチする条件があり、設定が重複している場合は、最後にマッチした内容が有効です。

  - 「file2-1.txt」を開いた場合、"[*]" により全部のファイルにマッチするので「end_of_line = crlf」が適用されるが、後にある"[*.txt]" で「end_of_line = lf」が最終的に有効になる。

### [補足]

#### 設定ファイルの記述方法

「.editorconfig」の記述方法です。エンコードは「UTF-8」にしてください。 (「BOM」は基本的には不要。秀丸エディタは「BOM」があっても大丈夫ですが、他の環境で問題となる場合あり。)

形式的には、iniファイルに似ていて、以下の形式になります。

    #コメント
    ;コメント
    root = true

    [適用するファイル1]
    設定名 = 設定値

    [適用するファイル2]
    設定名 = 設定値

- 「適用するファイル」の記述方法です。

  ファイル名を直接指定。フォルダ名がない場合は、ファイル名のみにマッチします。

      [README.TXT]
      charset = utf-8

  フォルダを指定する場合は区切り文字として "/" を使うこと。

      [Document/README.TXT]
      charset = utf-8

  ファイル名には、コマンドプロンプトのワイルドカードに似ている記号を使うことが出来ます。

  *

    "/"を含まない任意の文字列

    以下のように、"*"を指定した場合は全てのファイルという意味になる

        [*]
        charset = utf-8

  **

    任意の文字列

  ?

    任意の1文字

  {str1,str2}

    str1 または str2

        #readme.md または readme.txt に対応させる場合
        [{readme.md, readme.txt}]
        #以下の書き方でもOK
        #[readme.{md, txt}]
        charset = utf-8

    他の記号と組み合わせる事も可能

        #拡張子が md または txt に対応させる場合
        [*.{md, txt}]
        charset = utf-8

  "*" と "**"の違い。
  フォルダの指定があるとわかりやすいです。

  - 例1

        [folder1/*.txt]
        charset = utf-8

    folder1直下にある拡張子が「txt」のファイルにマッチします。サブフォルダにある拡張子が「txt」のファイルにはマッチしません。

        ◎: folder1\file1.txt
        ×: folder1\sub1\file1.txt

  - 例2

        [folder2/**.txt]
        charset = utf-8

    folder2および、folder2以下のフォルダにある 拡張子が「txt」のファイルにマッチします。

        ◎: folder2\file1.txt
        ◎: folder2\sub1\file1.txt

- 「設定名」と「設定値」は以下になります。

  root

    ファイルの先頭に記述します。「.editorconfig」の検索を継続するかを設定。

    設定値

    - true
      現在のファイルで止める。
    - false
      上位のフォルダも検索する。
  indent_size

    インデントの文字数を数値で指定。

    設定値

    - 0以上の整数
  tab_width

    インデントの文字数を数値で指定。 indent_size が指定されていないときは、この値を使う。

    設定値

    - 0以上の整数
  indent_style

    インデントのスタイルの設定。インデントを空白で入力するか、タブコードを入力するか。

    設定値

    - tab
      タブコード
    - space
      スペース
  trim_trailing_whitespace

    保存時、行末にある空白を除去。

    設定値

    - false
      除去しない
    - true
      除去する
  insert_final_newline

    最後の行が改行で終わっていない場合、保存時に改行を追加するか。(Ver.9.20以降対応)

    設定値

    - false
      追加しない
    - true
      追加する
  end_of_line

    改行の種類

    設定値

    - cr
    - lf
    - crlf
  charset

    ファイルのエンコード

    設定値

    - latin1
    - utf-8
    - utf-8-bom
    - utf-16be
    - utf-16le

#### マクロ関連

- 「.editorconfig」の設定が元の「ファイルタイプ別の設定」と異なっても、「一時的な設定」にはならないので `configstate` キーワードを見ても設定が変更されたかどうかは判断できない。
- 適用後に設定を getconfig で見ても、適用された内容が取得できる。

ページトップ 目次に戻る