English help on website



マクロの概要(入門用) キーワードについて(Ver9.34対応版)
キーワードについて
秀丸マクロには「キーワード」が多数そろっています。これらキーワードを使うと、編集中の秀丸エディタが、今どのような状態にあるかといったこと(これに限りません)が判断でき、その状態を取得(検出)できます。

たとえば、文章中の半角のカタカナを全角カタカナに変換するマクロがあるとします。マクロは文章の最初から最後までをカーソルを移動しながら半角カタカナを探し、 もし見つかれば全角カタカナに変換しますが、マクロ終了時にはカーソルが最後の文字の位置にきています。これでは編集しているときのカーソル位置がずれてしまいますので、 マクロ開始時の位置にカーソルを戻す処理をさせる必要が出てきます。最初にカーソルのあった位置を検出し、変数に記憶させるのですが、キーワードを使用すると簡単にカーソル位置を検出できます。

現在編集されている文章上のカーソル位置は、キーワード「 x 」、「 y 」で取得できます。「 x 」、「 y 」、このたった1文字ずつがキーワードです。
たとえば、カーソルが左端にある場合は x は 0 です(x座標が0)。また、カーソルが一番上にいる時は y は 0 です(y座標が0)。

x、yともキーワードの返す値は「数値型」です。カーソル位置が今横の何文字目(x)、縦の何行目(y)にあるのかを探し出し、その答えを出し(数値型変数に代入)ます。
#cur_x = x;    //数値型変数に現在のカーソルのx位置をキーワード「x」の戻り値を使って代入
#cur_y = y;    //数値型変数に現在のカーソルのy位置をキーワード「y」の戻り値を使って代入
この変数を使ってカーソルを元の位置に戻す記述は、「moveto #cur_x,#cur_y;」となります。ここで使用している「moveto」はキーワードでなく後述しますが「文」です。文「 moveto 」は、x座標とy座標を指定すると、その指定位置にカーソルを移動します。

キーワードは状態を取得できるだけで、処理を実行することはできません。カーソルを移動させるなどの処理を実行する場合は文を使用します。

また、秀丸エディタの各種状態ではなく、本日の日付を取得したい場合は「 date 」キーワードを使用します。
「date」キーワードは、"03/12/31(水)"のような文字列形式で返します。
message "本日は" + date + "です";
例として、日付と時刻関連キーワードを使って、本日の日付を利用したファイル名を作成してみます。本日が2003/12/31とします。ファイル名は「20031231.txt」とします。
この場合は年の4桁数字、月の2桁数字と日の2桁数字がわかれば自動でファイル名を作成できます。

ここでは、「 year 」「 month 」「 day 」キーワードを利用します。
「year」キーワードは、年を返します。4桁の文字列です。
「month」キーワードは、月を返します。2桁の文字列です。
「day」キーワードは、日を返します。2桁の文字列です。
$file_name = year + month + day + ".txt";
上記の例は、文字列型変数$file_nameにキーワード「year」の結果、「month」の結果、「day」の結果と文字列「".txt"」を結合して代入しています。$file_nameは「20031231.txt」となります。
キーワード「year」「month」「day」の返す値は数値型のように見えますが、文字列型ですので注意してください。

ここで、来年の本日のファイル名を作成する場合を考えてみます。
1年後なので、年度「year」に1を足すのですが、
$file_name = year + 1 + month + day + ".txt";
上記は、文字列型に数値型が混在しているためにエラーになります。
$file_name = year + "1" + month + day + ".txt";
上記はエラーになりませんが「200311231.txt」となり、「2004」となるべきところが「20031」と出て、望む結果とは異なります。

どうすれば望む結果が得られるかと考えると、「year」に「1」を加算したいので、いったん数値型に変換し、「1」を加算したのち、文字列型に変換すれば解決します。
変換には、後述しますが「関数」を利用します。
数値型を文字列型に変換するには「str」関数を使用します。文字列型を数値型に変換するには「val」関数を使用します。
ここではマクロの記述だけをしますので、「関数の説明」を読んだ後に、再度マクロの記述と該当するヘルプを見てください。ご理解いただけると思います。
#tmp_y = val(year);
//数値型変数「#tmp_y」に「year」の結果である文字列を数値型に変換してから代入
#tmp_y = #tmp_y + 1;    //「#tmp_y」に「1」を加算
$file_name = str(#tmp_y) + month + day + ".txt";
//来年の4桁数字である数値型変数「#tmp_y」を文字列に変換後、ファイル名として結合
//$file_nameは「20041231.txt」となります。

マクロを実行させるためには、このように、秀丸エディタなどの状態の情報をキーワードを利用しては取得していきます。キーワードが戻す値の型には注意が必要ですので、ヘルプでそのつど確認してください。
戻る 目次 次へ