こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

サクラエディタ マクロについて

お世話になっております。
掲題の件に関して、御存知でしたらご教授いただきたいです。


実現したいことは「数千行の全ての行末に,(カンマ)をうつ」
ということです。

秀丸で実現できることや、正規表現を使うといった回答以外でお願いします。
調べると拡張ファイルをダウンロードするようですが、サイトのページが途切れていたりとわかりません。


具体的には以下の通りです。
(1)ツール>キーマクロの記録開始を選択
(2)実施したいマクロを行う
(例)
1.行の先頭から末尾にカーソルを移動
2.,(カンマ)を打ち込む
3.行の先頭にカーソルを移動
4.次の行の先頭にカーソルを移動
(3)ツール>キーマクロの終了と保存を選択し、適当な個所にマクロを保存(test.mac)
(4)登録したtest.macをサクラエディタで開く
以下、(例)の内容
===============================================
//キーボードマクロのファイル
S_GoLineEnd(0);// 行末に移動(折り返し単位)
S_Char(44);// 文字入力
S_GoLineTop(0);// 行頭に移動(折り返し単位)
S_Down(0);// カーソル下移動
===============================================
(5)上記ファイルに先頭行から行の末尾までループする処理を記述して上書き保存
以下の構文が必要になると思います。
・ループ構文記載
・先頭行の取得
・変数の格納
・最終行の取得
(6)マクロを実行したいtxtに実行


これだけのことですが、実現方法がわかりません。
この構文はVBAと同じでしょうか?
そちらには疎いですが、それならばそれを調べれば目的は達成できます。


単純な実現内容ですが、サクラエディタのマクロは応用が利きますので、今後のためにも理解したいです。

必要な拡張ファイル、構文の言語(VBA?)、具体的な構文(for等)を教えていただきたいです。


長文になり、申し訳ありませんが、
以上よろしくお願いします。

投稿日時 - 2012-02-19 01:23:36

QNo.7313812

すぐに回答ほしいです

質問者が選んだベストアンサー

「44 = ,」 はASCIIコードだと思います。
http://ja.wikipedia.org/wiki/ASCII

その時々のエディタ内文字コード状態で自動記録の内容も変わったりするかもしれませんが・・・すみません、今Windowsが手元に無くて試せません。

投稿日時 - 2012-02-20 20:48:36

お礼

お世話になっております。
ASCIIでしたか…少し検討違いをしていたようです。

sholmeさんには本当に感謝しています。
最初の目的ではNO1の回答で充分だったのですが、突っ込んだ質問にも対応していただき…
本当にありがとうございます。

投稿日時 - 2012-02-21 12:09:30

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

有益な情報を提供できればとは思うのですが、WSHは自分も見よう見まね程度につかっていますので、正しく把握した上で回答できる自信がありません。

マクロとして書く際にはJavaScriptの基礎知識のみで十分だと思います。
サクラを環境として扱うための基本的なオブジェクトとして「Editor」が追加されているので、基本的にはこれの関数を利用するというぐらいでしょうか。
WSHのノウハウがあると、テキスト処理に限らないWindows操作周りの自動化も可能になるかもしれませんが・・・それよりも、どこからどこまでがブラウザでのみ使える機能なのかをはっきりさせておいた方がいいかもしれません。

リファレンスもWSH系の情報はどうしてもVBScriptが多くなりやすく、前述のとおりWSH自体を意識する必要はあまり無いと思うので、JavaScriptの基礎知識(変数、ループ、計算、リスト等。HTML操作は忘れるぐらいが良い。正規表現はOnigmoの方が高機能なのでJavaScript側のを使う必要無さそう)+サクラのマクロ用関数リファレンスで十分だと思います。

投稿日時 - 2012-02-20 03:36:15

補足

度々のご回答、ありがとうございました。
貴方の回答が的確且つ、非常に興味深く、朝5時からいじってました(笑)

提示していただいたサンプルを基にある程度はマクロを作成できるようになり、
本当に感謝しています。


更なる質問で恐縮ですが、
Editor.Char();
のEditor.関数名という規則がサクラエディタのものであるということは
調べてわかりました。

ですが、このChar()の中にある数字がわかりませんでした。
Unicode 文字のような気がし、以下のサイトなどで改行などを行ってみようと試みましたが、
上手くいかず…
http://code.cside.com/3rdpage/jp/utf-8/


更なるアドバイス、または参考URLを御存知でしたらご教授ください。

投稿日時 - 2012-02-20 06:44:55

ANo.1

自分も使ったこと無いんですが、ちょっと調べてみました。
結果、置換じゃないとなるとキーマクロのみではできないような気がしました。
WSHを使うことになるわけですが、キーマクロをベースにしてWSHを書くのは簡単です。
また、WSHだとその気になればいろんな言語が使えるわけですが、標準で動く中ではJScriptがお勧めです。
(個人的な好みを置いておいても、元のキーマクロがJavaScriptに近い文法なので)

ということで、こんな感じの物がとりあえず動きました。
http://ideone.com/oy3Ri
拡張子.jsで保存した上で読み込ませて下さい。(拡張子で言語判別)

<おまけ>
1.
キーマクロからJScriptへの変換イメージ
S_[func]; -> Editor.func();

2.
最新(簡易)リファレンス
ヘルプ → キー割り当て一覧をコピー

投稿日時 - 2012-02-19 10:37:22

補足

早速のご回答、ありがとうございます。
今はスマホ上のの操作で試して見ることが出来ませんが…

重ねての質問で申し訳ありません。
このjavascriptでしたら多少嗜んでおりますが、WSHとなると全くのド素人です…
作っていただいた「Editor.GoFileTop();」がWSHに当たるものでしょうか?
出来ればで構いませんので、オススメの入門サイトやリファレンスを教えていただけると非常に助かります。

よろしくお願いします。

投稿日時 - 2012-02-19 22:57:49

あなたにオススメの質問