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

# 第II部〜知っていると便利な秀丸の機能
変換モジュール

## 変換モジュール

秀丸エディタ Ver.5.00以降では、変換モジュールが使用できます。

- 解説
  - 変換モジュールの登録方法
  - 変換モジュールの機能をキー割り当てして使うには
  - 変換モジュールを置く場所について
- 補足
  - 64bit対応について
  - 「32bit変換モジュールを動作可能にする」について
  - 「置換」で使うには
  - 変換モジュールを作るには
  - 重複行削除（隣接行のみ）について

変換モジュールは秀丸エディタ本体で行っていた各種文字変換機能(大文字に変換や小文字に変換等)を、外部プログラムで行えるようにしたものです。標準で添付されているモジュールの他に、変換モジュールライブラリにも登録されています。いろいろ追加しておくと便利です。

### [解説]

標準添付されている変換モジュール(HmFilter)には以下の機能があります。

- UPPER CASE(大文字に変換)
- lower case(小文字に変換)
- ﾊﾝｶｸ
- 全角ひらがな
- 全角カタカナ
- TAB -> 空白
- 空白 -> TAB
- 英数字/記号/空白のみ半角に
- 英数字/記号/空白のみ全角に
- カタカナのみ半角に
- カタカナのみ全角に
- インデント
- 逆インデント
- ソート
- 大文字/小文字の変換
- 半角/全角変換
- JSON展開
- JSON短縮
- 重複行削除（隣接行のみ）

標準添付以外の変換モジュールを使うには登録が必要です。変換モジュールによっては、変換モジュール本体とは別に動作で必要なファイルもあるので、添付されている説明をよく確認してください。

変換モジュールを使うには以下の制限があります。

- 変換モジュール = 外部プログラム で処理を行う都合上、カラーマーカーは破棄されます。 (変換モジュールにはカラーマーカーの情報は渡らない)
- 変換を行っていなくても、選択した範囲の全行に編集マークが付きます。

#### 変換モジュールの登録方法

例として、追加する変換モジュール「Uniq」 (32bitの場合："*.hmf"、64bitの場合："*.hmf64") を秀丸エディタ本体と同じ場所にインストールしておきます。

変換モジュールの登録は、メニューの「その他」->「動作環境」で行います。

1. 「上級者向け設定」にチェックが付いていない場合、チェックする。

2. 「編集」の下に「変換」が追加されるので選択する。
   「変換モジュール」に登録済みの変換モジュールが表示されます。(初期状態は"(標準の変換)"のみ)

   「追加」ボタンで使用したい変換モジュールを指定します。

   変換モジュールのパスを直接入力するか、「参照」ボタンで選択します。

3. 「使用する変換」に追加した変換モジュール内の機能が表示されるので、使用する機能にチェックを入れて「OK」を押せば設定が反映されます。

4. 秀丸エディタの「編集」メニューの「変換」に追加した機能が表示されます。（変換は範囲選択をした状態でないと、有効になりません）

#### 変換モジュールの機能をキー割り当てして使うには

「標準の変換モジュール」の場合、「キー割り当て」に対応するコマンド(例えば「ﾊﾝｶｸに変換」等)があります。標準以外の変換モジュールは、対応するコマンドは用意されていません(用意できません)。その為、追加した変換モジュールの機能を直接「キー割り当て」で指定できません。

追加した変換モジュールの機能を「キー割り当て」で呼び出すには、

「変換モジュールの機能を呼び出すマクロ」を作り、「キー割り当て」して使う

という方法を使います。

##### 変換モジュールの機能を呼び出すマクロを作るには

変換モジュールを呼び出すには、「filter文」を使います。

    filter "変換モジュール名", "関数名", "パラメータ(省略可能)"
    変換モジュール名: "" を指定した場合は、標準の変換モジュールを使用します。
                      32bit、64bitの違いを考慮し、拡張子(".hmf" ".hmf64")は省略可能です。
                      (環境や、設定に合わせ適当に判断される)
                      ただし、変換モジュール名にパスが含まれる場合には、拡張子の省略はできません。
                      必ず指定してください。
    関数名          : 呼び出す機能名。
    パラメータ      : なければ省略可能です。

変換モジュールの説明に使い方があれば、その指示に従います。

使い方等説明がない場合は、「キー操作の記録」を使う方法があります。

秀丸エディタのヘルプ−編集−変換に 「変換モジュールをキー割り当てする方法」があるので参考にしてください。

「キー操作の記録」を使うので、使用する変換モジュールをあらかじめ秀丸エディタに登録しておく必要があります。

1. 範囲選択する。
2. 「マクロ」メニューにある「キー操作の記録開始/終了」で記録開始。
3. 使用したい変換機能を実行する。メニューから「編集 → 変換 → 使用する変換機能」を選択。
4. 「マクロ」メニューにある「キー操作の記録開始/終了」で記録停止。
5. 「マクロ」メニューにある「キー操作の保存」でファイルに保存する。

これが、実際にソート(昇順、数値の大小でソート)し保存したファイルです。 (標準の変換モジュールを使用しているので、変換モジュール名は省略されています)

    setcompatiblemode 0x0F;
    filter "" , "Sort" , "000100010001000\"00";

そのまま使っても良いのですが、範囲選択しているかどうかのチェックを追加します。 (範囲選択していなければ失敗するだけなのでチェックが必須という事はない)

    setcompatiblemode 0x0F;
    if(!selecting){
        message "範囲選択してから実行してください。";
        endmacro;
    }
    filter "" , "Sort" , "000100010001000\"00";
    endmacro;

このマクロファイルを「秀丸マクロのいろはにほへと」の「【４】マクロ登録」、「【５】ショートカットキーへの登録」を参考にマクロを登録し、キーに割り当ててください。

複数選択状態で、マクロを実行する場合は注意が必要です。

デフォルト状態では、filter文は「複数選択」に対応していません。たとえば複数選択状態で実行しても、複数選択した箇所全てではなくカーソルのある箇所だけに実行されます。

各種命令を「複数選択」に対応させるには、「setcompatiblemode文」を使います。

setcompatiblemode 文のフラグには、以下のフラグがあります。

    0x00100000 各種の文を複数選択に対応した動作へ設定。

setcompatiblemode文 にこのフラグをセットしてマクロに追加しておけば、複数選択に対応させることが可能です。

#### 変換モジュールを置く場所について

説明では追加する変換モジュールを秀丸エディタ本体と同じ場所に置きましたが、何処に置いても登録してしまえば秀丸エディタ本体からは問題なく使用できます。

問題(というかチョット面倒?)になるのは、マクロが絡む場合です。

「キー操作の記録」を使う場合、変換モジュールの登録は必要ですがマクロから変換モジュールを呼び出すだけなら登録は不要です。その為、「キー操作の記録」を使わずにマクロを作成する場合、変換モジュール名の記述方法に注意が必要です。

- 秀丸エディタ本体と同じ場所に配置した場合

      filter "HmFilter" , "Sort" , "〜"

  のように、変換モジュール名を指定すればいい。拡張子が無くても、設定や環境に合わせ適当に判断されます。 (秀丸エディタと同じ場所に変換モジュールを置いても、モジュール名の指定にパスが含まれると拡張子の省略はできません)

- 秀丸エディタ本体とは別に配置した場合

      filter "C:\\macro\\module\\HmFilter.hmf" , "Sort" , "〜"

  のように、変換モジュール名にフルパスを指定しないと、秀丸エディタが変換モジュールを読み込めません。 (拡張子の省略はできないので、必ず指定してください)

秀丸エディタ本体とは別に配置した場合、「キー操作の記録」を行うと変換モジュール名はフルパス(拡張子付き)で記録されるので、登録して「キー操作の記録」を使って雛形のマクロを作る方法をお勧めします。

### [補足]

#### 64bit対応について

変換モジュールは、実行環境により以下の拡張子で識別されます。

- 32bit用変換モジュールは"*.hmf"
- 64bit用変換モジュールは"*.hmf64"

通常、秀丸エディタ本体と同じbit数の変換モジュールしか使えませんが、 64bit版秀丸エディタは設定により32bit用変換モジュールを使用できます。 (逆の32bit版秀丸エディタで、64bit変換モジュールを使う事は出来ません)

64bit版秀丸エディタだけにある、「動作環境」-「64bit版」-「32bit版との互換性」の「32bit変換モジュール(*.hmf)を動作可能にする」のチェックを ON にしてください。これで 64bit版秀丸エディタから 32bit版変換モジュールが使用可能になります。 (ただし、32bit版変換モジュールが正常に動作する保証はありません。)

#### 「32bit変換モジュールを動作可能にする」について

- 秀丸エディタ本体で変換モジュールを使う場合

  32bit用変換モジュールを登録してある場合、チェックを「OFF」にすると変換メニューに表示されなくなり使用できなくなります。

- マクロや置換から使用する場合

  64bit/32bit版両方の変換モジュールがあり、拡張子が省略されていた場合は、チェックが「ON」でも64bit版が優先的に使用されます。

  拡張子が指定されていた場合は、指定されたモジュールを読み込みます。チェックが「OFF」の状態で、32bit版変換モジュールを指定すると実行に失敗します。(変換自体行われない)

#### 「置換」で使うには

秀丸エディタ Ver.8.13より、置換する内容を指定するかわりに変換モジュールの機能を指定できるようになりました。

これで何ができるかというと、検索でマッチした箇所を大文字/小文字/全角/半角へ等に変換する事が可能になります。 (検索でマッチした範囲に対し指定された変換モジュールを使い変換する)

詳細は、「知っていると便利な秀丸の機能」の「●置換」にある、 [変換モジュールを使った置換]を参照してください。

ただし、使用する変換モジュールが秀丸エディタ本体と同じ場所にない場合、マクロと同じくモジュール名にフルパスを指定する必要があります。

#### 変換モジュールを作るには

##### 作成方法その1

変換モジュールの実体はDLLなので、自分で作ることも可能です。

「秀丸エディタ」の「ダウンロード」から「さらに古いバージョン・関連ソフトはこちら」にある、「変換モジュール開発キットおよびサンプル変換モジュール」があるので参考にしてください。

##### 作成方法その2

秀丸エディタ Ver.9.25 から JavaScript でも変換モジュールを作成できます。 JavaScript といっても「Jscript」になります。非同期で呼ばれたような位置づけになるので、hidemaruオブジェクトの非同期対応のメソッド・プロパティを使うことができます。

詳細は「秀丸マクロヘルプ」の「変換モジュール」にある「変換モジュール（JavaScript版）作成方法（.hmfjs）」を参照。

#### 重複行削除（隣接行のみ）について

「隣接行のみ」とあるように、隣接していない重複行は削除されません。

    #元データ
    a
    a
    a
    b
    c
    b
    a
    a
    a

全て選択して「重複行削除（隣接行のみ）」を実行する。

    #元データ
    a
    b
    c
    b
    a

全て選択して「ソート」してから「重複行削除（隣接行のみ）」を実行する。

    #元データ
    a
    b
    c

「ソート」したくない場合は変換モジュールライブラリにある変換モジュールを使用してください。

ページトップ 目次に戻る