Title: 秀丸エディタQ&A捕捉事項

top秀丸エディタマクロ

update : 2012/11/18 (Sun)

1 はじめに

秀丸エディタには、「秀丸エディタQ&A集 制作しよう会」が作成した 「秀丸エディタQ&A集(第7版)」 があります。しかし、内容が秀丸エディタVer.4.00までくらいしか対応していません。

秀丸エディタは、2012/05/19 現在、

となっており、Q&A集の内容と一致しない箇所等があります。

このページは、秀丸エディタのバージョンアップ等により、 「秀丸エディタQ&A集(第7版)」 と一致しない内容についてのメモです。秀丸エディタQ&A集(第7版)と一緒に見てください。

本来なら「秀丸エディタQ&A集(第7版)」を、 現在のバージョン用に更新できればいいのですが・・・。

今なら、wikiに移行するって方向もあるかも知れないが、データ変換(?)->移行するための手間とか メンテナンスを考えると難しいかな?

2 目次

第I部〜秀丸エディタQ&A集

秀丸エディタの基本機能その他についての質問

秀丸マクロについての質問

第III部〜秀丸マクロのいろはにほへと

Ver.8は追加・変更が多いので、サイトー企画にある、秀丸エディタの紹介(Ver8.00対応版)を参照してください。

第IV部〜テキスト編集を極める!!

正規表現関連

3 第I部〜秀丸エディタQ&A集

3.1 秀丸エディタの基本機能その他についての質問

3.1.1 [HME0018B]●瞬間起動機能がメモリやシステムリソースを圧迫する

Q
秀丸の瞬間起動機能は、低スペックのマシン向けと言われていますが、実際この機能を使うと、 メモリやシステムリソースを圧迫してしまうようです。 本当に、この機能をONにしておいた方がよいのでしょうか?。
A

秀丸の瞬間起動機能は、歴史的には、ver.2.00(32bit版)が出来たとき、 以前の ver.1.48 までの16bit版に比べて 秀丸の起動に時間がかかってしまうのを改善するために設けられた設定です。 一旦起動した秀丸をリサイクルすることにより、新規にプロセスを起動するよりも速く秀丸のウィンドウを開くことを可能にしています。

説明追加

OSのシステムリソースに関しては、NT系OS(Windows NT、2000、XP以降)では、大幅に改善されています。 特に理由がなければ、常駐機能はONにしておきましょう。

瞬間起動の ON/OFF は、「メニューの「その他」->「動作環境」の「常駐機能」で行います。

動作環境(Version.7.10)
└常駐機能
  └□秀丸エディタの常駐

3.1.2 [HME0025A]●起動するとともに常駐させたい

Q
Windowsが起動する際に秀丸を自動的に常駐させたいのですが。
A

説明追加

常駐は、メニューの「その他」->「動作環境」の「常駐機能」で設定します。

動作環境(Version.7.10)
└常駐機能
  └□秀丸エディタの常駐

「秀丸エディタの常駐」のチェックボックスで、常駐のON/OFFを切り替えることが可能です。 動作環境ダイアログを閉じる際に、この設定に従い、 スタートアップ内へのショートカットの、削除/作成も行います。

目次へ

3.1.3 [HME0040A]●バックアップファイルを作りたくない

Q
バックアップファイル「*.BAK」が勝手に出来てしまって迷惑しています。どうしたらいいでしょうか?
A

説明追加

秀丸エディタの最近のバージョンでは、タブではなくツリーで選択します。 その他−保存・読込み)

ファイルタイプ別の設定(Version.7.00β2)
└その他
  └保存・読込み
    └□バックアップファイルの作成
      └□高速バックアップ

目次へ

3.1.4 [HME0045A]●ショートカットの起動オプションが効かない

Q
Windows95のショートカットに指定した秀丸95の起動時オプションが無視されてしまいます。
A

説明追加

Windows2000/XPでは、問題ありません。(ショートカットに指定した起動オプションが有効)

目次へ

3.1.5 [HME0049A]●「ワード」や「一太郎」等のファイルにgrep

Q
「ワード」や「一太郎」等のワープロソフトで作成したファイルに対して、 秀丸の grep 機能を使用したのですが、うまく検索されません。
A

説明追加

直接、ワープロソフトで作成したファイルに、grepを実行するのは無理ですが、テキスト要素をのみ取り出して、 grepする方法もあります。

EB series support pageにある、 「xdoc2txt」を使用すれば、PDF,WORD,EXCEL,一太郎などの各種バイナリ文書からテキストを抽出可能です。

目次へ

3.1.6 [HME0052A]●テキストファイルは常に秀丸で開きたい

Q
ファイルマネージャーやエクスプローラなどでテキストファイルをダブルクリックしても メモ帳が起動してしまいます。秀丸で開くようにしたいのですが?
A

説明追加

Ver.6(Vista対応前)までは、「その他」−「動作環境」−「関連付け」で設定を行っていましたが、 Vista対応の為、hmsetup.exeで関連付け設定を行うように戻っています。 「その他」−「動作環境」−「関連付け」から、 hmsetup.exe を起動して下さい。 hmsetup.exeを、直接単体で実行すると、インストーラーが起動してしまいます。

目次へ

3.1.7 [HME0056A]●画面の色を変更したい

Q
画面の色を自分好みの色に変更したいのですが。
A

内容変更

Ver.7では

その他
├ファイルタイプ別の設定
│├デザイン
││├場所の一覧

で、各種文字色やスタイルの設定が可能です。

目次へ

3.1.8 [HME0059A]●行と行の間隔を変えたい

Q
画面表示での行間の調整はできないのでしょうか?(以下省略)
A

内容変更

Ver.7では

その他
├ファイルタイプ別の設定
│├体裁
││├詳細

に、「行間」の設定があります。リストボックスから、設定したい行間を選んでください。

目次へ

3.1.9 [HME0060A]●カーソル行を下線で強調表示したい

Q
カーソルのある行を強調するために、下線を引きたいのですが。
A

説明追加

Ver.7では

その他
├ファイルタイプ別の設定
│├デザイン
││├場所の一覧
│││├  カーソル行

になります。カーソル行を選択すると、プロパティ枠内に、設定が表示されるので、 "下線モード"を選択して下さい。

目次へ

3.1.10 [HME0066A]●漢字だけを探したい

Q
半角の英数文字と漢字が混ざっている文書で、漢字だけを検索したいのですが、 どうしたらいいのでしょうか?
A

説明追加

Unicodeを使用している場合は、「[亜-K]」では、全ての漢字を検索することはできません。 Unicodeで漢字のみを示す正規表現は、かなり長くなります。

[\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DB5\u4E00-\u9FC3\uF900-\uFA2D\uFA30-\uFA6A\uFA70-\uFAD9]

本来なら、サロゲートペア領域も、

[\u20000-\u2A6D6\u2F800-\u2FA1D]

指定する必要がありますが、hmjre.dllでは、四桁以上の場合、そのままでは指定できません。

これでは長いので、適当に省略してみました。(サロゲートペア領域は含まない)

[\u3400-\u9FC3\uF900-\uFAD9]

説明追加

hmjre.dll Ver3.38(秀丸エディタ Ver8.10β4、秀丸メール Ver5.70β22)より、\u{xxxxx}という形式で、 16進数の文字コード(Unicode)を、指定することが出来るようになりました。
その為、サロゲートペア領域は以下のように指定することができます。

[\u{20000}-\u{2A6D6}\u{2F800}-\u{2FA1D}]

目次へ

3.1.11 [HME0071A]●正規表現による置換をしたい

Q
正規表現の検索が可能なら、正規表現による置換というのもあると思うんですが?
A

説明追加

秀丸エディタVer4より、正規表現検索エンジンが、JRE32.DLLからhmjre.dllに変更になりました。 hmjre.dllのV1.69より、Perl互換のタグ付き正規表現に対応しています。(秀丸エディタVer5.03以降) その為、"\f"ではなく、括弧によるタグ指定も可能です。

目次へ

3.1.12 [HME0078A]●各種設定を移行するためファイルに保存したい

内容変更

Q
秀丸エディタの各種設定を、他のマシンでも同じように設定したいのですが、 ファイルに保存されるので移行や複製が可能な項目と、 レジストリに保存されるので同じ設定にしたくても1から設定しないといけない項目を教えてください。 ファイルに保存する方法を教えてください。
A

秀丸のver.2.x以降は各種設定をレジストリに保存しているので、 ファイルに設定を書き出すことができるもの以外は移行できません。

ファイルとして保存できる項目は、

  • キー割り当てとマクロの登録内容
  • 強調表示
  • 上記を含む、全ての設定内容

が、あります。

  1. キー割り当てとマクロ登録の保存
    「その他」→「キー割り当て」の [保存...] ボタンで行います。 ファイルは「設定ファイル用フォルダ」に保存されます。 (未設定の場合は、秀丸エディタをインストールしたフォルダ) なお保存時の「マクロ登録の内容も補完しますか?」のメッセージ対し[はい] を選択すれば、 マクロの登録内容も保存することが出来ます。
    注意 保存されるのは、登録内容だけです。マクロファイルは、別途バックアップする必要があります。
  2. 強調表示 (※ver.3.0以降)
    「その他」→「ファイルタイプ別の設定」の「デザイン」から、[保存/読込] ボタンで行います。 ファイルは「設定ファイル用フォルダ」に保存されます。 (未設定の場合は、秀丸エディタをインストールしたフォルダ)

    Ver.7.00以降、秀丸エディタ本体の機能拡張にあわせ、強調表示ファイルには、 現在は以下の定義(設定)を保存/読込することが出来ます。

    • カラー設定
    • 強調表示一覧
    • 複数行の定義
    • ツリー定義
    • #ifdef等の詳細
  3. 上記を含めたほぼ全ての設定 (※ver.3.06 以降)

    • Ver.7.00未満では、秀丸エディタをインストールしたフォルダに存在する HMSETUP.EXE で行うことが出来ます。
      • 常駐を含めて全ての秀丸を終了後 HMSETUP.EXE を起動させ、 「秀丸の設定情報をファイルに保存/復元する」→[次に]→「設定情報をファイルに保存する」→ [次へ] の順で選択します。 最後にファイルの保存場所・名前を決め [保存]→[完了] を選択します。
      • 次に保存した設定ファイルが正しく保存されたか確認をします。 これは希に読み込みに失敗するファイルを作成する事があるためです。 秀丸は Windowsに標準で付いているレジストリエディタ (regedit.exe) を呼び出しているだけなので、 そちらに問題があるかもしれません。
        具体的な方法は、再度HMSETUP.EXE を起動させ、 「秀丸の設定情報をファイルに保存/復元する」→[次に] →「設定情報をファイルから復元する」→ [次へ] の順に選択します。 最後に保存したファイルを追加、つまり読み込んで良いかの確認があるので、 [はい] を選択してください。問題なければ、読み込みに成功します。 失敗するようなら再度ファイルの保存をやり直してください。
    • Ver.7.00以降では、秀丸エディタ本体メニューより、設定の保存/復元をおこないます。

      「その他」−「設定内容の保存/復元」

      HMSETUP.EXEを単独で起動させると、インストールが始まってしまうので、必ず、秀丸エディタ本体メニュー から実行してください。

    • 注意
      レジストリの復元は、レジストリファイルのダブルクリックでも可能ですが、 秀丸エディタを終了させた状態で、実行して下さい。 (なるべく、「設定内容の保存/復元」から行いましょう)

    なお送金したかどうかは保存されませんので、暗証番号は、別途紙に書き留めるなどして保存しておいてください。 また各々の拡張子「key」「hilight」「reg」「hmereg(Ver.8より)」は、付いていなければ自動的に付加されます。

参考資料(Ver.8ヘルプファイル)

目次へ

3.1.13 [HME0079A]●.hilight に \t や \n は使えるか?

Q
強調文字列(Ver.3.0からの機能)に、タブ文字や改行文字は使えますか?
A

内容の訂正

.hilight の\n に関してはダメとヘルプに書かれています。(強調表示文字列のプロパティ)タブ文字 \t もだめです。 強調表示文字列の中では\tは意味が無いです。秀丸エディタがタブを空白に変換して、 その変換された文字列を元に検索処理されるので、タブ文字には何もヒットしません。

強調文字の処理を行う上で内部的には、タブ文字は表示上の桁数分の空白に変換されます。 例えばタブの桁数が4桁なら、タブ文字1個は1〜4個の空白に変換されます。

Ver.4.00からは強調表示に「\t」を使うことができます。

目次へ

3.1.14 [HME0081A]●秀丸でハイパーリンク

Q
秀丸には Internet Explorer や Netscape Navigator といった ウェブブラウザのようなハイパーリンク機能が有りますか? 有れば、使えるようにするための設定方法を教えてください。
A

説明追加

秀丸エディタVer.5.00より、ファイル名と思われる場所、URL、メールアドレスと 認識する文字列は、正規表現によるカスタマイズが可能になりました。 デフォルトでは自動認識になっていますが、「ファイルタイプ別の設定」-> 「表示とカラー」から、変更したい箇所を選択すると「カスタマイズ」ボタンが 表示されるので、正規表現を指定してください。

URL、ファイル名をリンクにしたくない場合は、「表示とカラー」で無効にしたい箇所のチェックを、 外して下さい。

説明追加

秀丸エディタVer.7.00より、設定の場所が変更になりました。

ファイルタイプ別の設定(Version.7.00)
 ├デザイン
 │├場所の一覧
 │││├□ファイル名と思わしき場所
 │├表示
 ││├□ファイル名と思わしき場所のカラー表示(&F)
 │││└《Email, URL, ファイル名のカスタマイズ...》

「場所の一覧」か「表示」のどちらでもかまいません。 「場所の一覧」の場合、項目を選択すると、プロパティ枠内に、「カスタマイズ」が表示されます。

目次へ

3.1.15 [HME0084A]●行をソートすることは出来ませんか?

Q
行をソートすることは出来ませんか?
A

説明追加

秀丸エディタ Ver 5.00から変換モジュールが導入されました。 変換モジュールライブラリに「Sort」があります。 この変換モジュールを導入すれば、秀丸エディタでソートが可能になります。 (変換モジュールはマクロからも使用できます。)

説明追加

秀丸エディタ Ver 8.00から、ソートは、標準添付の変換モジュールに組み込まれたため、 別途、変換モジュールを追加する必要はありません。 また、TSV/CSV用に、タブ、カンマ区切りに限り、フィールドでソートが可能になってます。 (TSV/CSV用ですが、通常のファイルでも使用可能)

変換モジュールの使い方・設定方法は秀丸エディタ設定を参照してください。 マクロから変換モジュールを使う方法はマクロから変換モジュールを呼び出す方法を参照してください。

注記追加

Windows(2000、XP)標準のsort.exeは、英文字の大文字・小文字を区別しません。 その為、「sort < con > con」を実行しても、期待する結果にならない場合があります。

説明追加

先頭からではなく、途中からソートしたい場合等は、Windows標準のSortではなく、 UNIX系のSortを使えば可能です。 ( Windows標準のSortでも可能ですが、先頭からの文字数を指定するだけなので、固定長以外では使えない。 UNIX系ソートの場合、フィールドの区切り文字を指定し、フィールドでソートすることも可能。 ) UNIX系のソートは以下のURLから入手可能です。

(sort option < con > con の形式で実行してください。)

テキストファイルの内容

cccc 50
bbbb 200
dddd 100
aaaa 20
eeee 8

先頭からソート

aaaa 20
bbbb 200
cccc 50
dddd 100
eeee 8

第2フィールドでソート

dddd 100
aaaa 20
bbbb 200
cccc 50
eeee 8

第2フィールドで、数値としてソート

eeee 8
aaaa 20
cccc 50
dddd 100
bbbb 200

目次へ

3.1.16 [HME0085A]●grepで文字コードの自動認識

Q
grepで SHIFT-JIS 以外の文字コードのファイルを検索対象にした場合、うまく検索されません。
A
説明追加
  • 秀丸エディタVer5.03より、新タイプのダイアログのみ、grepでエンコードの種類を指定可能になりました。
  • 秀丸エディタVer5.11β1より、普通タイプのgrepダイアログでも、エンコードの種類を指定可能になりました。

目次へ

3.1.17 [HME0089A]●IEのソース表示に秀丸を使いたい

Q
Internet Explorerの「表示」−「ソース」でソースを表示すると、通常はメモ帳で表示されますが、 これを秀丸で開くように変更したいのですが?
A

説明追加

Ver.7から「その他」−「動作環境」−「関連付け」で設定を行います。(ブラウザの関連づけ)

目次へ

3.1.18 [HME0090A]●IEのHTML編集用エディタに秀丸を使いたい

Q
Internet Explorerで開いているページのHTMLを編集するには、IEのメニューの「ファイル」−「メモ帳 で編集」、 またはツールバーの「編集」ボタンから行えますが、これを秀丸で開くように変更したいのですが?
A

説明追加

Ver.7から「その他」−「動作環境」−「関連付け」で設定を行います。(ブラウザの関連づけ)

目次へ

3.1.19 [HME0095A]●検索した単語を全て強調表示したい

Q
検索した単語を、そのテキスト(秀丸ウィンドウ)全体で強調表示する方法はありますか?
A

説明追加

秀丸エディタVer.5.00より、検索文字列を強調表示することが可能になりました。

  • 検索ダイアログで"検索文字列を強調"をチェック
  • 「検索」メニューから「検索文字列の強調」を選択

ちなみに、「検索文字列の強調」も強調表示の一種であるため、改行を含む場合は強調表示されません。 (hidesoft.2:20700を参照) (秀丸ヘルプの強調表示文字列のプロパティ)

目次へ

3.1.20 [HMEXXXXA]●大文字を小文字に、小文字を大文字に変換したい

新規追加

Q
編集中のファイルにある大文字を小文字に、または小文字を大文字に変換することは出来ますか?
A
編集中のファイルにある、大文字/小文字を変換するには以下の方法があります。
  • 「大文字<->小文字の変換」を使う。

    「大文字<->小文字の変換」はカーソルのある文字だけを対象に、大文字<->小文字変換を行います。

    A→a B→b

    ただし、半角文字しか対応していません。

  • 「編集」メニューの「変換」を使う。

    「変換」メニューにある「UPPER CASE」が大文字変換、「lower case」が小文字変換になります。 変換機能を使うには、変換する文字範囲を、あらかじめ選択しておく必要があります。 「UPPER CASE」、「lower case」共に、半角全角文字を対象に変換を行います。

  • 置換を使う

    置換を方法もありますが、1文字単位でしか出来ません。 (正規表現を使っても。複数文字を同時に置換するのは無理です。)

    Perl等で使用されている「tr/searchlist/replacelist/」のような、リストを使った置換は、 標準では出来ません。(田楽DLL+Bregexp.dllを使って、マクロを組めば可能かもしれない。) それと、エスケープシーケンス(テキスト修飾子)である、\l、\u、\L、\U等も使えません。

    秀丸エディタ Ver.8.13β8より、置換時、検索結果に対し、変換モジュールの機能を実行できるようになりました。 「UPPER CASE」を指定すれば大文字変換、「lower case」を指定すれば小文字変換が可能です。
    置換で、変換モジュールの機能を使う」を参照してください。

目次へ

3.1.21 [HMEXXXXA]●変換モジュールの機能をメニューに追加したり、キーに割り付けたい

新規追加

Q
変換モジュールで提供されている機能を、(右クリック)メニューに登録したり、キーに割り付けたい。
A

標準添付のHmFilter.hmfに含まれる機能(大文字・小文字変換等)は、以前のバージョンとの互換性から、 メニューやキーに割り当て可能ですが、それ以外の変換モジュールは、そのままでは、割り当てる事は、 できません。(追加する項目に存在しない)

メニューやキーに割り当てるには、マクロを経由する必要があります。 変換モジュールの機能を、マクロにするには、「キー操作の記録」と「キー操作の保存」を使います。

詳細は、秀丸エディタのヘルプ「目次− 動作環境− 編集−変換」にある、 「参考:変換モジュールをキー割り当てする方法」を参照してください。

目次へ

3.1.22 [HMEXXXXA]●編集しているhtmlファイルをブラウザで開きたい

新規追加

Q
秀丸エディタで編集中のhtmlファイルを、ブラウザで開きたい
A

秀丸エディタのコマンドに「関連付けで開く」というコマンドが、用意されています。 この機能を使えば、編集しているファイルを、関連づけられたアプリケーションで開くことができます。

単純に、関連付け起動を行っているだけなので、ファイルを開いた時の挙動は、アプリケーションに依存します。

たとえば、htmlファイルで実行した場合、編集中のファイルを(保存する必要はあるが)ブラウザで開くことができますが、 同じファイルで、複数回の「関連付けで開く」コマンドを実行した場合、複数のブラウザが開くことになります。 (最初に開いているファイルをリロードすることはない。)

目次へ

3.1.23 [HMEXXXXA]●ファイルを開く場合、最初に開く場所を指定したい

新規追加

Q
ファイルを開く場合、最初に開く場所を指定したい
A

秀丸エディタ Ver.8より、「ファイルを開く」ダイアログの初期状態が指定できます。 ただし、新規作成状態(無題の状態)か、常駐秀丸エディタから「開く」を選択した場合のみ、有効です。 (既存のファイルを開いている場合には、設定は無効になる。)

[ファイル設定画面]

マクロを使う方法もあります。(ファイルを開くときのフォルダ指定を参照)

目次へ

3.1.24 [HMEXXXXA]●改行コードを変更したい

新規追加

Q
ファイルの改行コードを変更したい
A

秀丸エディタで改行コードを変更するには、以下の方法があります。

  • ファイル保存時に、「改行コード」を指定する。
    [ファイル保存画面]
  • (ステータスバーに改行の種類を表示しているなら、)ステータスバーから変更を行う。
    [ステータスバー画面]
  • メニューの「ファイル」から、「エンコードの種類」で変更を行う。
    [メニュー画面]

メニューや、ステータスバーで変更する場合でも、ファイルの保存は必要です。

目次へ

3.2 秀丸マクロについての質問

3.2.1 [HMM0015A]●拡張子の認識

Q
編集中のファイルの拡張子を調べたいのですが。
A

説明追加

文字列から拡張子を取得したい場合 その2
hmjre.dllの正規表現関数を使う方法もあります。

hmjre.dllの使い方はマクロで使うDLLhmjre.dllの使い方を参照してください。

注記追加

秀丸エディタの起動オプションで、"/c"オプションを指定した場合、 実際の拡張子と、filetypeで取得できる拡張子が一致しません。 これは、設定を強制的に変更している為の仕様になります。 (turukame.3:01568を参照)

目次へ

3.2.2 [HMM0032A]●「検索での表示」を設定

Q
ある文字列を検索させて消去したいのですがうまくいきません。
A

説明追加

秀丸エディタ Ver 6.00から「setcompatiblemode」が追加されました。 「折りたたみ」や「部分編集」がある場合に、マクロの互換性を保つために追加されましたが、 「秀丸エディタで同じファイルを開く場合」や「検索での表示」の設定を、一時的に変更する事 が可能になり、レジストリ操作が不要になります。

目次へ

3.2.3 [HMM0035A]●時間待ちサブルーチン

Q
秀丸マクロには、処理の待ち時間を設定するコマンドがないので不便です。
A

説明追加

秀丸エディタ Ver 8.00から「sleep文」が追加されました。

目次へ

3.2.4 [HMM0038A]●検索ダイアログボックスを出す

Q
検索ダイアログボックスを出すためのマクロ文が見当たりません。
A

内容変更

秀丸エディタ Ver4.10から、マクロに"searchdialog文"が追加されました。 これを使えば検索ダイアログを表示できます。 find文と違い、searchdown/searchup文と同じ引数を指定します。

目次へ

3.2.5 [HMM0041A]●文字列型変数の扱う文字列の限界

Q
ヘルプには「文字列型変数の扱える文字列は、長さが8000バイト程度までのものなら自由な内容を記憶することができます。 ただし、NULL文字を含むことはできません。」とあります。 もっと多量の文字列を扱いたい場合はどうするんですか?
A

説明追加

秀丸エディタVer.8.00より、文字変数の上限サイズが変更になっています。 文字変数全体で、最大1Mバイト(変数管理領域を含む)が、上限になります。 文字変数が1個なら、ほぼ1Mバイト使えます。 使用する文字変数が多くなれば、個別に使用できるサイズの上限は、各変数の使用状況によります。

説明追加

秀丸エディタVer.8.20β25 より、文字変数の上限サイズを、ユーザー側で設定可能になりました。 設定可能範囲は1M〜64Mバイトになります。

文字列を直接代入する場合等には、まだ4Kバイトの上限が存在します。 詳細は秀丸エディタマクロヘルプの「変数の使い方」 を参照して下さい。

目次へ

3.2.6 [HMM0042A]●grepのダイアログボックスを出す

Q
grepのダイアログボックスだけを出すことは出来ますか? grepdialog文では新規に白紙の秀丸が出てきてしまってイライラします。
A

説明追加

秀丸エディタVer.6.00より、ダイアログボックスを表示する「grepdialog2」が 追加になりました。grepdialog文と違い、grep文と同じ引数を指定します。

目次へ

3.2.7 [HMM0044A]●文字列型変数中の半角小文字を大文字に

Q
編集中のファイルにある文字ではなく、文字列型変数の中にあるアルファベットを 大文字にすることはできますか?
A

説明追加

秀丸エディタ Ver 6.50(Ver.6.50ではなく、Ver.7.00として公開)から、 マクロに"toupper関数"が追加されました。 この関数を使えば半角小文字を大文字に変換できます。 また、同時にfilter関数が追加され、変換モジュールの"UPPER CASE(ToUpper)"も利用できます。 "UPPER CASE"の場合は、全角も対象になります。 秀丸エディタ Ver 7.04より、"toupper関数"でも、引数を指定することで、 全角も対象にすることが可能です。

その他に、dllを使う方法もあります。

  • 田楽DLL
  • macrodll.dll

目次へ

3.2.8 [HMM0045A]●文字列型変数中の半角大文字を小文字に

Q
文字列の中にある半角英文字を小文字にできますか?
A

説明追加

秀丸エディタ Ver 6.50(Ver.6.50ではなく、Ver.7.00として公開)から、 マクロに"tolower関数"が追加されました。 この関数を使えば半角小文字を大文字に変換できます。 また、同時にfilter関数が追加され、変換モジュールの"lower case(ToLower)"も利用できます。 "lower case"の場合は、全角も対象になります。 秀丸エディタ Ver 7.04より、"tolower関数"でも、引数を指定することで、 全角も対象にすることが可能です。

その他に、dllを使う方法もあります。

  • 田楽DLL
  • macrodll.dll

目次へ

3.2.9 [HMM0055A]●文章作成日時を挿入するには?

Q
編集中のファイルに現在の日時を挿入したいのですが、何か簡単な方法はないでしょうか? (手で書くのでは不便です)
A

説明追加

秀丸エディタ Ver5.00β1から、挿入系のコマンドに「日付と時刻」が追加されています。 date + " " + time; という形式です。

例) 07/04/22(日) 22:50:18

任意の形式で挿入するには、マクロを作成する必要があります。

目次へ

3.2.10 [HMM0058A]●setactivehidemaru 文の引数

Q
setactivehidemaru 文を使って編集ウィンドウを切り替えたいのですが、使い方がよく分かりません。
A

説明追加

秀丸エディタ Ver5.05以降、パラメータが追加されています。 2番目のパラメタを指定すると、自分自身のウィンドウの重なり位置を調節できます。

3.2.10.1 setactivehidemaruの第二引数の使用例。「次の秀丸エディタ」を、「nexthidemaru」を使わないで行う。

初期状態。アルファベット(a〜d)がウィンドウハンドル(ウィンドウ識別番号)、数字がウィンドウ順番です。

┏━━━━━━━┓
┃d             ┃
┣━━━━━━━┫
┃3 ┏━━━━━┻━┓
┃c             ┃
┣━━━━━━━┫
┃2 ┏━━━━━┻━┓
┃b             ┃
┗━┣━━━━━━━┫
    ┃1 ┏━━━━━┻━┓
    ┃a             ┃
    ┗━┣━━━━━━━┫
        ┃0             ┃
        ┗━┫              ┃
            ┃              ┃
            ┗━━━━━━━┛

「次の秀丸エディタ」に切り替えるため、2番目のウィンドウをアクティブにする。(setactivehidemaru 1;) 単純に2番目のウィンドウ(b)が先頭に移動するだけなので、(a)と(b)が入れ替わるだけ。 再度2番目のウィンドウをアクティブにしても、(a)と(b)が入れ替わるだけで、(c)には移動しない。

setactivehidemaru 1;実行時の動作
┏━━━━━━━┓
┃d             ┃
┣━━━━━━━┫
┃3 ┏━━━━━┻━┓
┃c             ┃
┣━━━━━━━┫
┃2 ┏━━━━━┻━┓
┃b             ┃
┗━┣━━━━━━━┫
    ┃0             ┣━┓
    ┃              ┃ a┃
    ┗━┫              ┣━┫
        ┃              ┃ 1┃
        ┗━┳━━━━━┛
            ┃              ┃
            ┗━━━━━━━┛

←→
┏━━━━━━━┓
┃d             ┃
┣━━━━━━━┫
┃3 ┏━━━━━┻━┓
┃c             ┃
┣━━━━━━━┫
┃2 ┏━━━━━┻━┓
┃b             ┃
┗━┣━━━━━━━┫
    ┃1 ┏━━━━━┻━┓
    ┃a             ┃
    ┗━┣━━━━━━━┫
        ┃0             ┃
        ┗━┫              ┃
            ┃              ┃
            ┗━━━━━━━┛

「次の秀丸エディタ」で順次ウィンドウを切り替えるには、先頭のウィンドウを最後に移動する必要があります。 第二引数を指定し、先頭のウィンドウを最後に移動させる。

setactivehidemaru 1,-1;実行時の動作
┏━━━━━━━┓
┃d             ┃
┣━━━━━━━┫
┃2 ┏━━━━━┻━┓
┃c             ┃
┣━━━━━━━┫
┃1             ┃
┏━━━━━┻━┓
┗━┃b             ┃
    ┣━━━━━━━┫
    ┃0             ┣━┓
    ┗━┫              ┃ a┃
        ┃              ┣━┫
        ┃              ┃ 3┃
        ┃              ┃
        ┗━┳━━━━━┛
            ┃              ┃
            ┃              ┃
            ┗━━━━━━━┛

┏━━━━━━━┓
┃d             ┃
┣━━━━━━━┫
┃1 ┏━━━━━┻━┓
┃c             ┃
┣━━━━━━━┫
┃0             ┃
┃              ┣━┓
┗━┫              ┃ b┃
    ┃              ┣━┫
    ┃              ┣━┻━┓
    ┗━┳━┳━━━┛     a┃
        ┃3 ┣━━━━━━━┫
        ┃             2┃
        ┃              ┃
        ┗━┫              ┃
            ┃              ┃
            ┃              ┃
            ┗━━━━━━━┛

┏━━━━━━━┓
┃d             ┃
┣━━━━━━━┫
┃0             ┣━┓
┃              ┃ c┃
┃              ┣━┫
┃              ┃ 3┃
┃              ┣━┻━┓
┗━┳━┳━━━┛     b┃
    ┣━━━━━━━┫
    ┃2 ┏━━━━━┻━┓
    ┗━┃             a┃
        ┣━━━━━━━┫
        ┃             1┃
        ┃              ┃
        ┗━┫              ┃
            ┃              ┃
            ┃              ┃
            ┗━━━━━━━┛

目次へ

3.2.11 [HMM0062A]●フォルダ(ディレクトリ)の存在を確認したい

Q
existfile() 関数を使えばファイルの存在を確認できるようですが、 フォルダの存在を確認する事はできないですか?
A

説明追加

"nul"とはNULLデバイスの事です。NULLデバイスは、どのフォルダ(ディレクトリ)にも 存在するダミーのデバイスで、拡張子をつけても、同じ名前のファイルは(基本的には) 作成出来ません。 この性質を利用し、調べたいフォルダ(ディレクトリ)に、nulが存在するかどうかを 調べることで、フォルダ(ディレクトリ)なのかファイルなのかを、判定できます。

(2007/02/14追記)
NULLデバイスの有無で、フォルダかどうかの判断が出来ると書きましたが、 存在するファイルに"\\nul"をつけても、existfile()関数はtrueを返します。

//C:\TEMP\dummy.txt は存在しているファイルです。
if(existfile("C:\\TEMP\\dummy.txt\\nul)){
    message "存在するフォルダです。";
}

回避方法としては、"\\nul"ではなく、"\\*.*"を追加するとよさそうです。 フォルダの下には"."と".."というフォルダが、自動的に作成される(?)為、 フォルダが空でも、"*.*"にマッチします。ファイルの場合は、マッチしません。

確実に判断したいなら、DLLを使いましょう。

  • 田楽DLL
  • tkinfo.dll
  • macrodll.dll + WSH(FileSystemObject)

(2007/05/07追記)
秀丸エディタ Ver.7.00β3より、existfile関数が拡張され、ファイルの属性が、 取得できるようになりました。existfile関数の戻り値を調べれば、フォルダ(ディレクトリ) かどうかを確認できます。

#ATTRIBUTE_READONLY  = 0x00000001;
#ATTRIBUTE_HIDDEN    = 0x00000002;
#ATTRIBUTE_SYSTEM    = 0x00000004;
#ATTRIBUTE_DIRECTORY = 0x00000010;
#ATTRIBUTE_ARCHIVE   = 0x00000020;
if((existfile(macrodir,1) & #ATTRIBUTE_DIRECTORY) == #ATTRIBUTE_DIRECTORY){
  message macrodir + "はフォルダです。";
}

目次へ

3.2.12 [HMM0067A]●マクロで引用符を取得するには

Q
秀丸マクロの中で、秀丸で設定されている引用符を文字列として取得したいのですが、 どうすればいいですか?
A

説明追加

現在の秀丸(Windows95以降対応バージョン)では、設定は全てレジストリに保存されています。 iniファイル関連の関数で、"HIDEMARU.INI"にアクセスすると、自動的にレジストリをアクセスするように なっていますが、これは16bit版秀丸との(マクロの)互換性のための動作です。 現状では、レジストリアクセス関数で、レジストリから値を取得する方がいいでしょう。

// (例) 引用符を取得するマクロサンプル ---------------------
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
if(result){
    $inyoufuini = getregstr("RefMark");
    closereg;
    #inyoufuiniLen = strlen($inyoufuini);
    if(#inyoufuiniLen <= 2){
        $inyoufu = "";
    }else{
        $inyoufu = midstr($inyoufuini, 1, #inyoufuiniLen - 2);
    }
    message $inyoufu;
}else{
    message "引用マークの取得に失敗しました。\nマクロを終了します。";
}
endmacro;
// (ここまで)-----------------------------------------------

目次へ

3.2.13 [HMM0073A]●文字列をバイト単位ではなく文字単位で扱う

Q
「strlen」等の文字列操作関数はバイト単位となっていますが、文字単位で扱うことはできないでしょうか? 1バイト文字と2バイト文字が混在している時に、とても困ります。
A

説明追加

秀丸エディタ Ver8.00β9 より、文字列をunicodeとして扱う、wcsleftstr、wcslen、wcsmidstr、 wcsrightstr、wcsstrrstr、wcsstrstr関数が、追加されています。

目次へ

3.2.14 [HMM0074A]●文字列の後方から文字列を検索

Q
文字列の後方から文字列を検索する方法はありますか? ロングファイル名での拡張子取得で、「.」を後方から検索したいのですが。
A

説明追加

秀丸エディタ Ver8.00β9 より、文字列末尾から検索を行う、strrstr、wcsstrrstr関数が、 追加されています。

目次へ

3.2.15 [HMM0076A]●重複行の削除

Q
重複行の削除はできませんか?
A

説明追加

秀丸エディタ Ver 5.00から変換モジュールが導入されました。 変換モジュールライブラリに「uniq」があります。 この変換モジュールを導入すれば、秀丸エディタで重複行の削除が可能になります。 (変換モジュールはマクロからも使用できます。)

変換モジュールの使い方・設定方法は秀丸エディタ設定変換モジュールを使うにはを参照してください。

正規表現を使う方法もあります。

検索文字:(^.+\n)\1
置換文字:\1

連続している行を1行にします。同じ行が複数連続する場合には、複数回実行する必要があります。

目次へ

3.2.16 [HMMXXXXA]●自動起動マクロで複数のマクロを実行したい

新規追加

Q
自動起動マクロでは、一つのマクロしか指定できません。複数のマクロを実行する方法はありませんか?
A

自動起動マクロにはマクロは一つしか指定できません。 複数のマクロを登録するには、ダミーのマクロを用意し、その中で実行したいマクロを指定します。 マクロ実行中に、マクロを実行するには、"execmacro"文を使用します。

//ダミーマクロの例
execmacro "実行したいマクロ名その1";
execmacro "実行したいマクロ名その2";
execmacro "実行したいマクロ名その3";

目次へ

3.2.17 [HMMXXXXA]●マクロ実行すると「DLLがロードされていないのにdllfunc関数が使われました」と表示される

新規追加

Q
マクロ実行すると「DLLがロードされていないのにdllfunc関数が使われました」と表示され、マクロが中断してしまいます。
A

基本的には マクロのバグ(?)で、原因としては 以下の内容が考えられます。

  • loaddll文/関数で、dllの読み込みに失敗しているのに、dllfunc/dllfuncstrを呼び出している
    • DLLの読み込みに失敗する原因としては、DLLが適切な位置に配置されていない等が考えられます。 実行するマクロと同じ場所か、マクロフォルダか、秀丸エディタ本体と同じ場所に配置するかは、 マクロの説明書等に記載されているはずなので、確認してください。
    • マクロとDLLが、同じ場所にあるにも関わらず、動作しない場合は、DLLのロード部分を確認見直してみてください。
  • loaddll文の有効範囲の問題(DLLの有効範囲を参照)
  • 複数DLLを使用していた場合、DLL切替に失敗している

他の人が作ったマクロの場合は、作った人に連絡するようにして下さい。

秀丸エディタ Ver.8.00を使用している場合、マクロにバグが無くても、 「DLLがロードされていないのにdllfunc関数が使われました」 と、表示される場合があります。(loaddll関数の場合を参照)

目次へ

3.2.18 [HMMXXXXA]●通常版で、小数点を含む演算を行う方法

新規追加

Q
通常版で、小数点を含む演算を行う方法はありませんか?
A

浮動小数点演算を行うには、浮動小数点数版(統合版)が必要ですが、WSHを使えば、多少手間がかかりますが、 通常版でも浮動小数点演算が可能です。

"ScriptControl"を使用し、WSHで演算させて、文字列として、取り込みます。

#sc = createobject("ScriptControl");
if(#sc == 0){
    message "オブジェクトの作成(ScriptControl)に失敗しました。";
    endmacro;
}
setpropstr #sc,"Language", "VBScript";
if(!result){
    message "プロパティの設定(Language)に失敗しました。";
    endmacro;
}
$ret1 = callmethod_returnstr(#sc, "Eval","cstr(1.01+0.03)");
if(getresultex(10) == false){
    message "Eval(1)の実行に失敗しました。";
    releaseobject #sc;
    endmacro;
}
message $ret1;
$ret2 = callmethod_returnstr(#sc, "Eval","cstr(1.155-0.03)");
if(getresultex(10) == false){
    message "Eval(2)の実行に失敗しました。";
    releaseobject #sc;
    endmacro;
}
message $ret2;
$ret3 = callmethod_returnstr(#sc, "Eval","cstr(1.155/0.3)");
if(getresultex(10) == false){
    message "Eval(2)の実行に失敗しました。";
    releaseobject #sc;
    endmacro;
}
message $ret3;
releaseobject #sc;
endmacro;

目次へ

4 第III部〜秀丸マクロのいろはにほへと

4.1 マクロ内での「\」や特殊文字の使い方

4.1.1 【1】「\」の意味

内容追加

「\u????」:任意のUnicode。????の部分に16進数4桁でUnicodeを記述する。

4.2 秀丸マクロで文字列を編集する

4.2.1 【4】範囲選択するには

説明追加

4.2.2 【5】範囲選択を解除するには

注意書き追加

endsel;を実行して選択モードを終了しても、範囲選択状態ままカーソル移動コマンドを使うと、 移動した場所まで範囲選択状態になります。 動作的にはおかしいけど、現状(2004/05/22)においては仕様ということです。

範囲選択した後の操作(コマンド?)で範囲選択が解除されれば問題はないが、 解除されない場合にカーソル移動を行うと思わぬ結果になるので注意。

4.2.3 【6】文字列型変数に取り込むには:その1(gettext文)

内容の訂正と追加

ちなみに、gettext文を実行すると、(gettext文での選択範囲が、秀丸ウィンドウ上で範囲選択されている 範囲と重なっているか否かに関わらず)範囲選択は解除されます。

秀丸エディタVer5.00β5より、gettext(gettext2)文に第5パラメタが追加され、範囲選択を維持することが できるようになりました。(0:範囲選択解除 1:範囲選択保持 省略した場合は0と見なされる。)

秀丸エディタVer5.00β4より、gettext2文が追加されました。gettext文との違いは、columnとlinenoで、 指定を行うところです。

検索系のコマンドと併用する場合、"検索での動作"の設定にかかわらず、マッチした範囲を取り込むには、 seltopx〜selendyキーワードではなく、foundtopx〜foundendyキーワードを使うといいでしょう。

4.3 秀丸ウィンドウの管理

4.3.1 【4】(補足) タブ関連

新規追加

秀丸エディタVer.4.10より、ウィンドウのタブ化が可能になりました。 さらに、Ver.5.00より複数タブウィンドウにも対応しました。

タブモードが有効な場合、通常と同じくopenfile文を使えば、アクティブなタブウィンドウに、 タブとして追加されます。

新規のタブウィンドウとして開く場合は、起動オプション"/i"を指定します。(Ver.5.00以降)

現在のタブウィンドウから、別のタブウィンドウまたは新規タブウィンドウに移動するには、 settabgroup文を使います。

タブ間の移動にはnexttab(次のタブ)、prevtab(前のタブ)を使います。(Ver.5.00以降) Ver.4.00系は、複数タブウィンドウをサポートしていないので、通常の移動命令で切替が可能です。

openfile文で座標指定が可能ですが、タブモードの場合、"/i"オプションを併用する場合、 または、他に秀丸ウィンドウが存在しない場合以外は、 アクティブなタブウィンドウに追加される為、座標指定自体が無効化されます。

タブモード時は、"ウィンドウサイズを自動調整する設定"が無効化されます。

4.3.2 【5】(補足) 常に手前に表示

新規追加

秀丸エディタVer.4.10以降から、"常に手前に表示"が追加されました。 タブモードの場合、"常に手前に表示"してある、タブグループから分離すると、 "常に手前に表示"の設定も引き継がれます。

4.4 マクロ登録数の制限突破大作戦

4.4.1 【2】「エッ! 秀丸ってマクロが80個しか登録できないのっ!?」

内容追加

●作例3

slide_moon氏作成マクロ  Magic Key Ver.0.11 -- 多工程短縮キー

作例2で紹介されている"KEY_ASIN.MAC"の模写マクロである「magickey.mac」と 保守マクロである「magickey_cfg.mac」のセット。 追加機能として、多段階のキーストローク設定が可能。

●作例4

ませま氏作成マクロ  キー割り当て拡張マクロ Ver. 0.03

作例2で紹介されている"KEY_ASIN.MAC"の機能拡張版。 拡張子毎の割り当て変更、多段階のキーストローク設定が可能。 また、200 以上の独自コマンド群(マクロ)がセットになっている。

秀丸エディタVer.5対応版は、 ませま氏のwebサイト より入手して下さい。

目次へ

4.5 秀丸エディタVer.6.00 マクロ関連の変更履歴

4.5.1 【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.6.00

4.5.2 【2】仕様変更 - 「秀丸エディタ」Ver.6.00

4.6 秀丸エディタVer.6.50 マクロ関連の変更履歴

4.6.1 【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.6.50

4.6.2 【2】仕様変更 - 「秀丸エディタ」Ver.6.50

4.7 秀丸エディタVer.7.00 マクロ関連の変更履歴

4.7.1 【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.7.00

追加された命令の詳細は、マクロヘルプを参照して下さい。

4.7.2 【2】仕様変更 - 「秀丸エディタ」Ver.7.00

4.8 秀丸エディタVer.8.00 マクロ関連の変更履歴

Ver.8からVer.7からの変更点は、かなり多い為、変更内容については、サイトー企画のページを参照してください。

4.8.1 【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.8.00

秀まるおのホームページ(サイトー企画)−秀丸エディタの紹介(Ver8.00対応版)(追加コマンド/設定一覧) にある、「マクロ」の項目を参照して下さい。

4.8.2 【2】仕様変更 - 「秀丸エディタ」Ver.8.00

秀まるおのホームページ(サイトー企画)−秀丸エディタの紹介(Ver8.00対応版)(追加コマンド/設定一覧) にある、「マクロ」の「・変更,パラメータ追加」を参照して下さい。

4.9 秀丸エディタVer.8.10 マクロ関連の変更履歴

Ver.8.00からVer.8.10からの変更点として、主なのは、DirectWrite対応です。

4.9.1 【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.8.10

4.9.2 【2】仕様変更 - 「秀丸エディタ」Ver.8.10

4.10 秀丸エディタVer.8.11 マクロ関連の変更履歴

4.10.1 【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.8.11

4.10.2 【2】仕様変更 - 「秀丸エディタ」Ver.8.11

4.11 秀丸エディタVer.8.12 マクロ関連の変更履歴

4.11.1 【1】マクロ関連の変更履歴 - 「秀丸エディタ」Ver.8.12

5 第IV部〜テキスト編集を極める!!

5.1 ●正規表現について

5.1.1 【5】 (補足) 秀丸上での複数行にまたがる検索について

説明追加

hmjre.dllは、"$"が、テキストの途中に現れる"\n"にもマッチします。その為、ファイル2にもマッチします。 また、秀丸エディタ Ver.8より、正規表現中に、(?#maxlines:数値)という形式で、 正規表現DLLに渡す行数を指定できます。 (正規表現のコメント形式に基づく指示なので、検索には影響しない。)

5.2 ●タグ付き正規表現とは?

5.2.1 【2】区切り記号の入れ方

説明追加

hmjre.dllでは、タグ付き正規表現はPerlと同じく、括弧「()」を使用します。 "\f"でのタグ指定は、現状(2010/02/07)でも有効ですが、内部処理的には、 かなり面倒なことをやるので、あまり使わないようにしましょう。 (秀丸エディタ内部で、"\f"で検索文字を分割し、分割した分だけ、 検索を実行するので、速度的にも遅くなると思います。)

6 正規表現関連

6.1 正規表現エンジン

64bit対応について

マクロ用DLLと異なり、正規表現エンジンは、使用する秀丸エディタと同じbitのDLLしか使えません。

  • 64bit 秀丸エディタの場合、正規表現DLLは、64bitのDLLしか使用できない
  • 32bit 秀丸エディタの場合、正規表現DLLは、32bitのDLLしか使用できない

64bit対応しているのは、hmjre.dll、hmonig.dllです。 JRE32.DLL、BRegIf.dllの64bit版はありません。

6.1.1 hmjre.dll

秀丸エディタの正規表現エンジンは、JRE32.DLLからhmjre.dllに変更になっています。 hmjre.dllはJRE32.DLLに対して、以下の拡張が行われています。

hmjre.dllのVer.3.00以降、さらに拡張が進み、

以上の機能が、追加されています。 詳細は、hmjre.dllのヘルプを参照してください。

6.1.2 BRegIf.dll+BREGEXP.DLL

BREGEXP.DLLを使うことにより、Perl互換(1996/05/25辺りのPerl5)の正規表現が使えます。 使用するにはBRegIf.dllが必要です。

hmjre.dllに比べ、使用できる正規表現は増えますが、以下の制限があります。

2007/09/16に公開されたバージョン(BRegIf.dll v0,0,2,2)では、K.Takata氏の修正が取り込まれ、 括弧を使用した場合でも、置換で"\1"によるタグ参照が可能です。 "bregonig.dll"を認識し、"bregonig.dll"-->"BREGEXP.DLL"の順番でDLLのロードを試みます。 明示的に"BREGEXP.DLL"を使用したい場合は、"bregonig.dll"をリネームするか、削除しておく必要があります。

6.1.3 BRegIf.dll+bregonig.dll

bregonig.dllを使うことにより、鬼車の正規表現が使えます。 (使用できる正規表現や、制限事項等は、bregonig.dllのドキュメントを参照) 使用するにはBRegIf.dll(v0,0,2,2)が必要です。

BRegIf.dll+BREGEXP.DLLと同じ制限があります。

bregonig.dllのインターフェースが、"BREGEXP.DLL"と同じであることを利用して、動作させています。

"bregonig.dll"-->"BREGEXP.DLL"の順番でDLLのロードを試みます。 あまりないとは思いますが、"bregonig.dll"のロードに失敗した場合、"BREGEXP.DLL"が使用されることになります。 "bregonig.dll"を使用する場合は、"BREGEXP.DLL"を削除、またはリネームしておいた方がいいかもしれません。

"bregonig.dll"のバージョンが1.41未満の場合、BRegIf.dllの独自拡張機能である、";1"によるサブパターン指定が、 正常に動作しません。サブパターン選択を使用する場合は、Version.1.41以降が必要です。

bregonig.dllは、Unicode対応版のVer.2.00以降がありますが、BRegIf.dllからは、Unicode対応のAPIは呼び出していません。 その為、Ver.2.00以降を使用しても、動作はANSI/Shift_JIS 専用版と同じです。

6.1.4 hmonig.dll

hmonig.dllを使うことにより、鬼車の正規表現が使えます。 Ver.0.5.9.0以降では、 鬼雲(Onigmo (Oniguruma-mod) ) の正規表現が使えます。 (使用できる正規表現や、制限事項等は、hmonig.dllのドキュメントを参照)

以下の制限があります。

6.2 正規表現メモ

秀丸エディタにおけるタグ付き正規表現の上限を追加

6.2.1 否定文字クラス

一致して欲しくない文字の集合。指定された文字に一致しない文字にマッチする。 "\n"も含め、"一致しない文字"全てにマッチします。 ("."と違い、"\n"を含めたくない場合は、明示的に指定する必要あり。)

DLLのページにある、ファイルパスの分割で、 ファイル名を分割するのに、否定クラス([^\\]+)を使用しているが、対象文字列を、

$name = "C:\\Program Files\\Hidemaru\\hidemaru.exe\n";
                                                  ====追加

にすると、最後のファイ名の所で、改行文字までマッチします。 否定クラスを使う場合、意図しない箇所までマッチする事があるので、 注意が必要です。

6.2.2 タグ付き正規表現(hmjre.dll "()"で指定)

一般的(?)な正規表現と違い、ネストした括弧に対応していないので注意。 一番浅い括弧をタグと認識する。

aa(bbb(ccc)dddd)(eeeee)
   ============  =====
        \1         \2
(ccc)はタグと認識しない。

6.2.3 後方一致指定と後方不一致指定

肯定先読み、否定先読みとも呼ばれています。 "^"や"$"と同じアンカーで位置にマッチする。 単独で指定した場合は、"文字"にマッチしないので、「検索文字列の強調表示」しても強調表示されない。

(?!A) ==> "A"でない文字の先頭にマッチする。

最後にある必要はなく、以下のような書き方もできます。

(?!000)[0-9]{3} ==> "000"ではない3桁の数字

正確(?)には、「"000"の先頭に一致しない3桁の数字」になるのかな? 「"000"が前にない3桁の数字」ではないので注意。

6.2.4 前方一致指定と前方不一致指定

肯定後読み、否定後読みとも呼ばれています。 "^"や"$"と同じアンカーで位置にマッチする。 単独で指定した場合は、"文字"にマッチしないので、「検索文字列の強調表示」しても強調表示されない。

(?<=A) ==> "A"の最後(末尾)にマッチする。

"後読み"と言われているように、最後にマッチ判定を行います。

(<=aaa)(bbb)ccc(ddd) ==> (bbb)ccc(ddd)にマッチする箇所を探してから、
                         (<=aaa)にマッチするか判定する。

使用するDLLによって、制限があるので注意すること。

6.2.5 grepで条件に一致しない行を列挙する

秀丸エディタVer.8より、grepに「ヒットしない行」というオプションが追加され、 秀丸エディタの機能で、条件に一致しない行を列挙可能になっています。

BRegIf.dllはBREGEXP.DLLへの仲介を行うだけでなく、独自の拡張が行われて、 パターンの否定が出来ます。(詳細は添付されているテキストファイルを参照)

hmjre.dllの場合は、後方不一致指定を使えば可能。

^((?!一致しない文字列).)+$

参考サイト:正規表現パズル

一致しない条件が一文字または、どれか1文字という場合は、

^[^a]+$

という、否定クラスを使う方法もあります。

以下の正規表現は、"ab"を含まないという表現にはならないので、注意すること。

^([^a][^b])+$

6.2.6 \wの違い

\wは一般的に、単語構成文字([a-zA-Z_0-9])のクラス略記法ですが、使用するDLLによって、 扱いが異なります。(正規表現は処理系毎に、微妙に異なることが多い事と、多言語対応による。)

6.2.6.1 hmjre.dll

JRE32.DLLと同様のため、[a-zA-Z_]+ になります。 数字が含まれない事と、文字ではなく、文字列にヒットします。

6.2.6.3 BRegIf.dll + bregonig.dll、hmonig.dll(Ver.0.50未満)

[a-zA-Z_0-9]+2バイト文字の範囲(漢字、カタカナ、ひらがな) になります。 (使用するロケールに従い、単語構成文字にマッチする。) 日本語の文章を、「\w+」で検索すると、ほぼ全ての文字にマッチします。 その為、「\b」(単語境界)も影響を受けます。

6.2.7 Shift_JIS範囲外の文字(漢字)について

2011/09/19現在、正規表現検索でShift_JIS範囲外の文字を正常に扱えるのは、hmjre.dll、hmonig.dll(Ver.5.0以降)だけです。 他のDLL(BRegIf.dll(BREGEXP.DLL、bregonig.dll)、hmonig.dll(Ver.5.0未満)、JRE32.DLL)は、基本的に対応していません。

検索が行われない訳ではありませんが、

等は、正常な結果を返さない場合があります。

bregonig.dllは、Unicode対応版のVer.2.00がありますが、BRegIf.dllからは、Unicode対応のAPIは呼び出していません。 その為、動作はANSI/Shift_JIS 専用版と同じです。

6.2.8 秀丸エディタにおけるタグ付き正規表現の上限

秀丸エディタで使用できるタグの上限は、hmjre.dllの仕様から9までとなります。

BRegIf.dll + bregonig.dll、hmonig.dll自体は、10以上も指定可能ですが、 秀丸エディタ側から10以上を取得できないので、実質10以上は、使用できません。

正確には、検索時に後方参照で使用する場合は、DLL内の処理で済むため、10以上も使用可能です。 置換は、秀丸エディタ側で処理を行うため、10以上は使用できません。

目次へ


top秀丸エディタマクロ