秀丸エディタ


uwscで秀丸エディタを起動してマクロを実行

uwscで秀丸エディタを起動するにはコマンドプロンプトを利用する。

//秀丸エディタを起動
-------------------------------------
CMD = "C:\Program Files\Hidemaru\Hidemaru.exe"
DOSCMD(CMD) //実行
-------------------------------------

//ファイルを指定して秀丸エディタを起動
-------------------------------------
CMD = "<#DBL>C:\Program Files\Hidemaru\Hidemaru.exe<#DBL> <#DBL>C:\フルパス\目的のファイル.html<#DBL>"
DOSCMD(CMD) //実行
-------------------------------------
※パスのProgram Filesに半角スペースがあるので、パス全体を<#DBL>でかこう

//ファイルを指定してマクロを実行
-------------------------------------
CMD = "<#DBL>C:\Program Files\Hidemaru\Hidemaru.exe<#DBL> /xマクロ名.mac <#DBL>C:\フルパス\目的のファイル.html<#DBL>"
DOSCMD(CMD,true) //実行。trueがないとファイルを閉じるまで次の命令が実行されない
-------------------------------------
※マクロは オプション /xマクロ名 で指定

マクロを実行した後の処理

マクロ終了のダイアログを閉じる
-------------------------------------
//#32770はダイアログ。-1は無限待ち
id = GETID("秀丸エディタ", "#32770", -1)
SLEEP(1)
CLKITEM(id, "OK", CLK_BTN)
-------------------------------------

上書き保存と閉じる
-------------------------------------
// ショートカットキーの実行
hide_id = GETID("目的のファイル.html", "Hidemaru32Class", -1)
SCKEY(hide_id, VK_CTRL, VK_S) //保存
//CLKITEM(hide_id, "上書き保存 Ctrl+S", CLK_ACC) //もしくはこれ
SLEEP(1)
CTRLWIN(hide_id, CLOSE) //閉じる
-------------------------------------

epubをルビありのテキストにする

calibreを使ってepubをテキストにすると「漢字かんじ」のように漢字とルビがつながる。「漢字(かんじ)」のようにルビを括弧でかこいたいのでcalibreで変換前にひと手間加える。

1.epubをzip形式に変換して、本文が書かれたhtmlファイルを取り出す。

2.htmlファイルを秀丸マクロで変換。

--------------------------------
//隣り合うルビを結合する
replaceallfast"<ruby>([^<]*?)<rt>([^<]*?)<¥/rt><¥/ruby><ruby>([^<]*?)<rt>","<ruby>¥¥1¥¥3<rt>¥¥2",regular;

//隣り合うルビタグがなくなるまで置換
while (result != 0) {

replaceallfast"<ruby>([^<]*?)<rt>([^<]*?)<¥/rt><¥/ruby><ruby>([^<]*?)<rt>","<ruby>¥¥1¥¥3<rt>¥¥2",regular;

//#a = result;
//$a = str(#a);
//message $a;

}

//ルビを括弧でかこう
replaceallfast"<rt>","(";
replaceallfast"</rt>",")";

//不要なrubyタグを削除
replaceallfast"<ruby>","";
replaceallfast"</ruby>","";
message "終了";
--------------------------------

3.変換後のhtmlファイルをzipの中に戻し、epub形式に戻す。そのepubをcalibreでテキスト変換する。

【秀丸エディタ】マクロで正規表現を使った置換をする

秀丸エディタのマクロで正規表現を使った置換をする記述

-----------------------------------------
//正規表現を使った置換を実行
replaceallfast"パターン","置換後の文字",regular;
-----------------------------------------

「.mac」などの拡張子で保存して、「マクロ」-「マクロ実行」からファイルを選択する

---メモ---

replacedown → 下方向に置換する
replaceup → 上方向に置換する
replaceall → すべて置換する
replaceallfast → すべてを高速に置換する

regular は正規表現を使うためのオプション。省略した場合は正規表現なしの置換になる。

//エスケープは¥¥ 例: 「.」ではじまる文字列
replaceallfast"^¥¥..*$","",regular;

//後方参照は¥¥1

【秀丸エディタ】マクロでのコメントアウト

秀丸エディタでマクロファイル内で使用できるコメントアウトの覚書

//一行のコメントです

/*

複数行の
コメントです

*/

【秀丸エディタ】正規表現で改行を含む一行を丸々削除する

秀丸エディタの正規表現で、改行をふくんだ一行をまるまる削除する記述

正解
------------------------------------
^なんらかパターン¥n
------------------------------------

以下のやり方だと改行が残ってしまうのでダメ

×
------------------------------------
^なんらかパターン$
------------------------------------

×
------------------------------------
^なんらかパターン¥n$
------------------------------------

秀丸エディタである文字列が入っていない行を削除する

秀丸エディタである文字列が入っていない行を削除するには、grep(グレップ)機能を使う。すると、ある文字が含まれる行だけを抽出できる。それにより、特定の文字列の入っていない行を削除したのと同じ結果になる。

grep は、「ファイル全体から (global) 正規表現 (regular expression) に一致する行を表示(print)する」機能。

使い方は、「検索」 → 「grepの実行」

「grepの実行」は、対象にするフォルダを指定できるので、指定フォルダの中に複数のファイルを入れれば、いくつものファイルから一度にデータを抽出できる。

秀丸エディタのキー割り当て一覧(デフォルト)

秀丸エディタのキー割り当て一覧。

行の選択がしたくて調べた。
行の選択は左トリプルクリック。

初期設定時のキー割り当て一覧
-----------------------------------------------
F1 = 秀丸エディタヘルプ
F3 = 下候補
F4 = (標準の動作:次の結果)
F5 = 単語をコピー
F6 = 分割ウィンドウ切り替え
F7 = 切り抜き
F8 = コピー
F9 = 貼り付け
F10 = タグジャンプ
F11 = アウトライン解析...
F12 = 行番号表示/非表示
左ダブルクリック = 単語選択(全部)
左トリプルクリック = 行の選択
右クリック = メニュー8:右ボタン
常駐秀丸エディタのダブルクリック = 新規作成
Shift+F1 = 記録開始/記録終了
Shift+F2 = 再生
Shift+F3 = 上候補
Shift+F4 = (標準の動作:前の結果)
Shift+F5 = 行をコピー
Shift+F6 = 選択開始
Shift+F7 = 追加切り抜き
Shift+F8 = 追加コピー
Shift+F9 = BOX貼り付け
Shift+F10 = メニュー8:右ボタン
Shift+Enter = 空行挿入
Ctrl+F1 = 外部ヘルプ
Ctrl+F4 = ファイルを閉じる
Ctrl+F6 = 次の秀丸エディタ
Ctrl+F10 = ダイレクトタグジャンプ
Ctrl+Enter = 行削除
Ctrl+Del = 単語削除(カーソルから後ろ)
Ctrl+Up = 高速上移動
Ctrl+Down = 高速下移動
Ctrl+Right = 単語右
Ctrl+Left = 単語左
Ctrl+A = すべてを選択
Ctrl+C = コピー
Ctrl+F = 検索...
Ctrl+G = 指定行...
Ctrl+H = バックスペース
Ctrl+I = タブ
Ctrl+J = 改行
Ctrl+K = 対応する括弧に移動
Ctrl+L = 最後に編集した所
Ctrl+M = 改行
Ctrl+N = 新規作成
Ctrl+O = 開く...
Ctrl+P = 印刷...
Ctrl+Q = メニュー3:Ctrl-Q
Ctrl+R = 置換...
Ctrl+S = 上書き保存
Ctrl+V = 貼り付け
Ctrl+X = 切り抜き
Ctrl+Y = やり直しのやり直し
Ctrl+Z = やり直し
Ctrl+[ = {に移動
Ctrl+] = }に移動
Ctrl+< = 単語左 Ctrl+> = 単語右
Shift+Ctrl+F1 = 外部ヘルプ2
Shift+Ctrl+F6 = 前の秀丸エディタ
Shift+Ctrl+F10 = バックタグジャンプ
Shift+Ctrl+F = 検索(上)...
Shift+Ctrl+N = 下の強調行
Shift+Ctrl+P = 上の強調行
Shift+Ctrl+< = 単語の先頭に移動 Shift+Ctrl+> = 単語の最後に移動
Alt+Bksp = (標準の動作:やり直し)
Alt+Enter = (標準の動作:単語補完)
Alt+Up = (標準の動作:前の折りたたみ可能行)
Alt+Down = (標準の動作:次の折りたたみ可能行)
Alt+Right = (標準の動作:展開)
Alt+Left = (標準の動作:折りたたみ)
Alt+[ = (標準の動作:部分編集)
Alt+] = (標準の動作:部分編集解除)
Alt+Shift+Bksp = (標準の動作:やり直しのやり直し)

メニュー1:ファイル
N|新規作成
O|開く...
S|上書き保存
C|ファイルを閉じる
B|別ファイルへの追加保存
L|閉じて開く...
P|ファイル名変更...
U|再読み込み
W|上書き禁止

メニュー2:C言語機能
P|上の強調行
N|下の強調行
--------------------
[|{に移動
]|}に移動
--------------------
C|アウトライン解析...
S|強調行の範囲選択
H|外部ヘルプ
T|タグジャンプ
D|ダイレクトタグジャンプ
B|バックタグジャンプ
G|tagsファイルの作成...

メニュー3:Ctrl-Q
S|行頭に移動
D|行末に移動
--------------------
R|ファイルの先頭
C|ファイルの最後
--------------------
E|画面の先頭
X|画面の最後
--------------------
F|検索...
A|置換...
--------------------
[|{に移動
]|}に移動

メニュー8:右ボタン
Z|やり直し
--------------------
V|貼り付け
A|すべてを選択

選択中右ボタン
X|切り抜き
X|コピー
X|貼り付け
--------------------
X|引用付きコピー
X|追加切り抜き
X|追加コピー
--------------------
X|削除
--------------------
X|TO UPPER CASE
X|to lower case
--------------------
X|ハンカクに変換
X|全角ひらがなに変換
X|全角カタカナに変換
--------------------
X|TAB -> 空白 変換
X|空白 -> TAB 変換
--------------------
X|インデント
X|逆インデント
-----------------------------------------------

ちなみにこの一覧は、「その他」-「キー割り当て」-「一覧表作成」で出力できる。

【秀丸エディタ】マクロの繰り返し処理の書き方はWHILE

秀丸エディタのマクロにはfor文がないので、繰り返し処理にはWHILEを用いる。

-----------------------
while (条件式){
//条件式が0以外(真)の場合この部分の記述(処理)を、
//条件式が0(偽)になるまで繰り返し実行する
}
-----------------------

改行を10回繰り返すサンプルコード
-----------------------
#a = 0; //文字列型変数は先頭が$、数値型変数は#。変数名は大文字/小文字が区別される。
while( #a < 10 ) { insertreturn; #a = #a + 1; } -----------------------

秀丸エディタ、マクロのコメントアウトの記述方法

コメントを入れるにはC++言語と同様に//が使える。

記述例:
--------------------------------------------------------------------------
//作品名を作品IDに置換
replaceallfast "^作品名" , "作品ID" , regular, nocasesense, hilight, loop;
--------------------------------------------------------------------------

V6.00より、/*~*/もコメントとして記述できる。
ただしV6.00未満や秀丸メールの場合はできないので、汎用的なマクロを作る場合は/*~*/は使わないほうがいい。

秀丸エディタで複数の改行を一つにまとめる正規表現

改行を一つにまとめる正規表現は本来次のような書き方になる。

\n+ → \n(左から右へ置換)

複数の改行を、一つの改行に置き換えるだけだが、秀丸エディタではうまくいかない。
秀丸エディタでは、2行単位でしか連続した改行を見つけることができず、3行の改行に対しても、そのうちの2行にだけマッチして残りの1行にマッチしない。その結果、改行の数は減るが何行か残ってしまう。

この問題を解決するには次のように記述する。

(?#maxlines:10)\n+

正規表現のパターンをこう記述すると、10行までの改行をまとめて置換できる。10の部分を増やせば、対象となる行数も増える。(この記述はバージョン8以上に対応している)