連番を簡単に作るサクラエディタのマクロ

ちょっと欲しくなったので作った。たいしたやつじゃないよ。

autofill.js

(function(){
    String.prototype.chomp = function(){
        return this.replace(/[\r\n]+$/, '');
    };
    
    function get_upline(){
        Editor.GoLineTop();
        Editor.Up_Sel();
        return Editor.GetSelectedString(0).chomp();
    }
    
    if(Editor.IsTextSelected() != 0) return;
    
    var end_value = get_upline();
    var begin_value = get_upline();
    if(!/^\d+$/.test(end_value) || !/^\d+$/.test(begin_value)) return;
    
    var result = [];
    for(var i = parseInt(begin_value); i <= parseInt(end_value); i++){
        result.push(i.toString());
    }
    
    var n = ['\r\n', '\r', '\n'][Editor.GetLineCode()];
    Editor.GoLineTop();
    Editor.Down_Sel();
    Editor.Down_Sel();
    Editor.InsText(result.join(n) + n);
})();

上記をautofill.jsみたいな適当な名前でサクラエディタのマクロ格納場所に保存して、サクラエディタの「共通設定」-「マクロ」で登録する。

使い方

1
10
|

こんな風に入力して、|の位置にカーソルを置いて、マクロを実行する。

すると、自動的に以下のようになる。

1
2
3
4
5
6
7
8
9
10

つまり、初期状態の2つの数字を開始値と終了値にして、連番を作成するわけだ。これだけ。

今まではこういうのExcelのオートフィル機能で作ってそれをコピペしてたんだけど、あまりにメンドイのでマクロにした。少しラクになった。

できないこと

  • 終了値よりも開始値の方が大きい数字の場合
  • 数字をゼロ詰めしたい場合

この辺は考慮してない。これは別途「選択範囲の行を逆さまにするマクロ」「選択範囲の数字をゼロ詰めするマクロ」を作るべきだと思う。

今のところ必要ないので作るつもりは無かったけど、「作るべきだと思う」とか書いちゃったので、作りたくなってきたなあ。あとでやるか。