秀丸マクロ メモ(忘備録)

スポンサーリンク

秀丸マクロのメモ(忘備録)です。

【公式】秀丸マクロマニュアルはこちら

基本事項


// 文の終わりには;(セミコロン)をつける
$str = "abc";

// ラベルの場合は:(コロン)をつける
// ラベルはサブルーチン等で使用する
label:

文字列


// ダブルクォーテーションで囲む
$s = "hoge";

// 文字列の連結
$s = "hello" + "world"; // "hello world";

// 改行は \n
$s = "\n";

// タブは \t
$s = "\t";

変数


// 文字列
$a = "hoge";

// 数値
#b = 2;

// メッセージボックス
message($a);

// 数値は文字列に変換する
message(str(#b));

配列

配列の場合、[]を使う。要素は0から


// 文字列型配列
$season[0] = "spring";
$season[1] = "summer";
$season[2] = "autumn";
$season[3] = "winter";

message $season[5];  // 無い要素を指定すると「""」(空白)が返ってきた

// 数値型配列
#year[0] = 2000;
#year[1] = 2001;
#year[2] = 2002;

message str(#year[5]); // 無い要素を指定すると「0」が返ってきた


// 多次元配列も可能
$str[0][0] = "abc";

#num[0][0] = 10;



演算子

論理演算子

演算子説明
&&and
||or
!not

文字列操作


$s = "abcde";

// 途中から切り出し
$re = midstr($s, 1, 2); // "bc";

// 第3引数を省略すると、第2引数以降の全ての文字列
$re = midstr($s, 1);    // "bcde";

// 左から
$re = leftstr($s, 1);   // "a";

// 右から
$re = rightstr($s, 1);  // "e"

// 文字列の長さ  全角は2
#len = strlen($s);      // 5

文字列検索


// 文字列検索
// 見つかった位置を返す。先頭が0、見つからない場合は -1
#num = strstr("abcde", "c");  // 2

#num = strstr("abcde", "z");  // -1

// 第三引数で検索開始位置を指定
#num = strstr("abcabcabc", "a", 5);  // 6

削除系文


// deleteキーと同じ
delete;

// backspaceキーと同じ
backspace;

カーソル移動


// 行頭へ移動
golinetop

// 行末へ移動
golineend

// ファイルの先頭へ移動
gofiletop

// ファイルの最後へ移動
gofileend


// 行番号と桁番号でカーソルを移動(順番に注意)
// 桁番号、行番号共に先頭は「1」
movetolineno 桁番号, 行番号;

// ファイルの先頭へ移動
movetolineno 1, 1;

// 5行目の先頭へ移動
movetolineno 1, 5;

挿入系文



// 文字列挿入
insert "hoge";

// enterキーと同じ
insertreturn;

// tabキーと同じ
tab;

範囲選択


// 選択範囲の文字列を取得(範囲選択を維持しない)
$str = gettext(seltopx,seltopy,selendx,selendy);

// 選択範囲の文字列を取得(範囲選択を維持する)
$str = gettext(seltopx,seltopy,selendx,selendy, 1);


// 範囲選択開始
beginsel;

カーソル行の内容を範囲選択して取得


golinetop;   // 行頭
beginsel;    // 範囲選択開始
golineend;   // 行末
// 選択範囲の文字列を取得(範囲選択を維持する)
$str = gettext(seltopx,seltopy,selendx,selendy, 1);

範囲選択中かどうかを知る


if (selecting == 1){
	// 範囲選択中の処理
} else {
	// 範囲選択中でない場合の処理
}

// 範囲選択中でない場合、マクロを終了する
if (selecting == 0){
	endmacro;
}

クリップボード


// クリップボードに設定
setclipboard $str;

// クリップボードからデータを取り出す
$str = getclipboard;


// 範囲選択開始
beginsel;

// 範囲選択を取り消す
escape;

// すべてを選択
selectall;


検索・置換

置換


// 高速全置換 a を b に置換
replaceallfast "a", "b";

// pタグを削除(正規表現)
replaceallfast "<(/)?p.*?>", "", regular;

// strongタグを削除(正規表現)
replaceallfast "<(/)?strong.*?>", "", regular;

if文


$str = "a";
if ($str == "a") {
    // 処理
} else if ($str == "b") {
	// 処理
} else {
	// 処理
}

ループ


// 5回ループ
#i = 0;
while(#i < 5) {
	// 処理
	#i = #i + 1;
}

マクロ制御文




// 現在のマクロを終了
// execmacroで呼び出された場合、呼び出し元は続行
endmacro;

// execmacroの呼び出し元も含めてすべてのマクロの実行を終了
endmacroall;

// マクロの中から別のマクロを実行
execmacro "test.mac";

// 引数がある場合(カンマで区切る)
execmacro "test.mac", "引数1", "引数2";

// 呼ばれた側は getarg関数で取得する
$para1 = getarg(0);


ファイル


// 新規作成状態の見えない秀丸エディタが起動(ステルスモード)
openfile "/h";

ファイル名関連キーワード

キーワード説明
filenameファイル名のフルパス
basenameファイル名のみ
directoryカレントフォルダ

サブルーチン

基本形


// サブルーチン呼び出し
call ラベル名;

endmacro;

// サブルーチン
ラベル名:

	// 処理を記述

	// 戻る
	return;

サブルーチンの作り方 詳細

秀丸エディタ管理



// 実行中のウィンドウハンドルを取得
#handle_num = hidemaruhandle(0);

// アクティブな秀丸エディタを指定(ウィンドウの番号か、ハンドルを指定)
setactivehidemaru 番号;
setactivehidemaru #handle_num;
setactivehidemaru 1;

// 秀丸エディタを終了(自分自身は指定できない)
closehidemaru 番号;
closehidemaru #handle_num;

// 強制的に秀丸エディタを終了(自分自身は指定できない)
closehidemaruforced 番号;
closehidemaruforced #handle_num;

外部プログラム起動


// Firefoxでファイルを開く
run "\"C:\\Program Files\\Mozilla Firefox\\firefox.exe\" " + filename;