- 作成者投稿
- 2011年6月30日 9:30 am #10400匿名休止中
例えば、「日付を入れて、数行の空行を追加して、日付の直下にカーソルを移動する」というような、複数行のスクリプトを実行して、UNDO しようとすると、CTRL-Z を何度も押す必要があると思うのですが、これが一回の CTRL-Z で UNDO できるととても便利です。
私が、知らないだけで、もうあるのかもしれませんが。
いかがでしょう。2011年6月30日 4:00 pm #10401Yutaka Emuraキーマスターpsum 様
いつも EmEditor Professional をお使いいただき、誠にありがとうございます。
マクロだと、確かに複数回の「元に戻す」を行うことになります。スニペットだと、一回で元に戻ったりします。
具体的に、どのようなことを行いたいか書いていただければ、もっといい方法が見つかると思いますので、教えていただけると幸いです。どうぞよろしくお願い申し上げます。
2011年7月1日 1:22 am #10402匿名休止中>具体的に、どのようなことを行いたいか書いていただければ、もっといい方法が見つかると思いますので
超具体的には、次のようなマクロで、日付を自動挿入するようにしているのですが、
myNow = new Date();
myYear = myNow.getYear()
myYear4 = (myYear < 2000) ? myYear+1900 : myYear;
myMonth = myNow.getMonth () + 1;
myDate = myNow.getDate ();
myDay = myNow.getDay ();
myHours = myNow.getHours ();
myMinutes = myNow.getMinutes();
mySeconds = myNow.getSeconds();
myDateTime = ""; myDateTime += myYear4 + "/";
if ((myMonth + "").length < 2) { myDateTime += "0"; } myDateTime += myMonth + "/";
if ((myDate + "").length < 2) { myDateTime += "0"; } myDateTime += myDate;
myaWeekDay = new Array("日","月","火","水","木","金","土");
myDateTime += "(" + myaWeekDay[myDay] + ")";
if ((myHours + "").length < 2) { myDateTime += "0"; } myDateTime += myHours + ":";
if ((myMinutes + "").length < 2) { myDateTime += "0"; } myDateTime += myMinutes + ":";
if ((mySeconds + "").length < 2) { myDateTime += "0"; } myDateTime += mySeconds + " ";
document.selection.StartOfLine();
document.selection.NewLine(1);
document.write("——————————————————————————");
document.selection.NewLine(1);
document.write(myDateTime);
document.selection.EndOfLine();
document.selection.NewLine(10);
document.selection.LineUp(0, 9);
document.write("・");これを UNDO しようとすると CTRL-Z を 14 回押さなくてはなりません。
これが一回の CTRL-Z で済むようなマクロの書き方とか、コマンドとかがあれば良いのではないかと思います。
例えば、「一括 UNDO スタート」と「一括 UND エンド」のようなコマンドがあるとかいうことでしょうか。2011年7月1日 2:16 am #10403Yutaka Emuraキーマスターpsum 様
いつも EmEditor Professional をお使いいただき、誠にありがとうございます。
確かに、マクロだと1回の「元に戻す」で戻らないですね。
スニペットで、「スニペットの新規作成」を行い、以下のように、マクロを `# … ` で囲ってテキストにしておくと、1回の「元に戻す」で戻ります。この方法でよろしければお試しください。`# myNow = new Date();
myYear = myNow.getYear()
myYear4 = (myYear < 2000) ? myYear+1900 : myYear;
myMonth = myNow.getMonth () + 1;
myDate = myNow.getDate ();
myDay = myNow.getDay ();
myHours = myNow.getHours ();
myMinutes = myNow.getMinutes();
mySeconds = myNow.getSeconds();
myDateTime = ""; myDateTime += myYear4 + "/";
if ((myMonth + "").length < 2) { myDateTime += "0"; } myDateTime += myMonth + "/";
if ((myDate + "").length < 2) { myDateTime += "0"; } myDateTime += myDate;
myaWeekDay = new Array("日","月","火","水","木","金","土");
myDateTime += "(" + myaWeekDay[myDay] + ")";
if ((myHours + "").length < 2) { myDateTime += "0"; } myDateTime += myHours + ":";
if ((myMinutes + "").length < 2) { myDateTime += "0"; } myDateTime += myMinutes + ":";
if ((mySeconds + "").length < 2) { myDateTime += "0"; } myDateTime += mySeconds + " ";
document.selection.StartOfLine();
document.selection.NewLine(1);
document.write("——————————————————————————");
document.selection.NewLine(1);
document.write(myDateTime);
document.selection.EndOfLine();
document.selection.NewLine(10);
document.selection.LineUp(0, 9);
document.write("・");
`どうぞよろしくお願い申し上げます。
2011年7月1日 3:46 am #10404匿名休止中江村さま
ご返答ありがとうございます。
やってみました。
これは、良いですね。
少し、スニペットについて、勉強してみます。2011年7月4日 8:00 am #10407匿名休止中江村さま
psum です。
スニペットにすると UNDO が CTRL-Z 一回で済むので、使ってみているのですが、スニペットボタンを押して、スニペットが窓の左に出ている間はうまくいくのですが、これを消してしまうと動作しないようです。
この機能だけのために常にスニペット窓を出しておくというのは、ちょっと考えものなので、何か回避策はありませんでしょうか?
やはり、マクロ自体に次のような感じでまとめる部分を指定できると便利かと思いました。必須ではないが、あれば便利という感じでしょうか。document.StartUndoBundle();
:
: この間に書かれたスクリプトは CTRL-Z 一回で UNDO される。
:
document.EndUndoBundle();2011年7月4日 8:11 pm #10411Yutaka Emuraキーマスターpsum 様
いつも EmEditor Professional をお使いいただき、誠にありがとうございます。
ご意見ありがとうございます。将来のバージョンで検討させてください。
どうぞよろしくお願い申し上げます。
2011年7月4日 11:49 pm #10412匿名休止中江村さま
はい、どうぞよろしくお願い致します。
psum
- 作成者投稿
- このトピックに返信するにはログインしてください。