フォーラムの返信を作成しました。
- 作成者投稿
- Applek参加者
回答ありがとうございます。
私はdocument.selection.BatchReplace(batch_list,eeFindReplaceSelOnly | eeReplaceAll,eeExFindRegexOnigmo);このコードは使っていないです。
そのため今回の不具合のパターンとは因果関係が違います。以下が実際に不具合が起きているマクロです
よろしくお願いいたします。document.selection.Find(“∈[^∈∋]{0,15000}?∋”,eeFindNext | eeFindReplaceRegExp | eeFindSelectAll,eeExFindRegexOnigmo);// 置換の検索範囲を指定
batch_list = editor.filters;
batch_list.AddReplace(“”,””,eeFindReplaceRegExp | eeFindReplaceCase,0);
document.selection.BatchReplace(batch_list,eeFindReplaceSelOnly | eeReplaceAll,0);
document.selection.Collapse();// 選択範囲のブルー反転を解除させる
// document.selection.SetActivePoint(eePosLogical, 1, 6);// ブルー反転を解除させる
以下は
batch_list = editor.filters;
batch_list.AddReplace(“”,””,eeFindReplaceRegExp | eeFindReplaceCase,0);
document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);そのためdocument.selection.BatchReplace(batch_list,eeFindReplaceSelOnly | eeReplaceAll,eeExFindRegexOnigmo);これは使っていないです。
Applek参加者まだどの法則で発生するかは特定できませんが、常にいつでもどの箇所にも起きているのではないようです。
document.selection.Collapse();だけでは何かしら条件が重なって選択が外れないことが起きる不具合があるようです。
document.selection.SetActivePoint(eePosLogical, 1, 6);これを組み合わせて動作させることで完全に選択範囲は解放されるようですので、document.selection.Collapse();だけで組み合わせて動くように改良してもらえれば防げます。Applek参加者何かしらの複数の要因が絡んで起きている可能性がありますので再現パターンがどのようなときに起きるかを確認してみます。
単純に書いたサンプルでは再現しないのかもしれません。Applek参加者最新の23.10で問題が再現しましたので勘違いではなかったようです。
document.selection.Collapse();これだけでは解除されていないです。document.selection.SetActivePoint(eePosLogical, 1, 6);//ブルー反転を解除させる
しばらくこのコードをコメントアウトにしてやっていたら不具合が起きてました。
これを付けないと他の所がおかしく変換されました。
コメントアウトを消すと直りました。どうやら同じ行にあると影響が残る感じです。これは送ったサンプルとは再現の仕組みが違いました。
Applek参加者回答ありがとうございます。
拡張子の設定というのは、自動バックアップの対象にするファイルとしての拡張子指定です。
ソフトウェアじたいの関連付けのことではないです。
自動バックアップはできておりますが、自動バックアップには、行数指定はつけないのでしょうか?
よろしくお願いいたします。Applek参加者回答ありがとうございます。
一律に決めるのではなく、止まるときに「マクロを停止して開きますか」とかメッセージが出るという選択肢も増やして頂けませんでしょうか?
車と同じでマクロがいきなり止まるなんてことは無理なんでしょうか?Applek参加者回答ありがとうございます。
サンプルに関しては書き方が間違っていたと思います。
実践ではちゃんと範囲だけ置換出来てます。
最近のバージョンではdocument.selection.Collapse();だけにしてやってもうまく切り替わっている感じで再現するか様子を見ている感じです。Applek参加者実践で直っているかどうかしばらく確認してみます。
前はdocument.selection.SetActivePoint(eePosLogical, 1, 6);//ブルー反転を解除させる
このコードを付けることで解決したのは事実です。Applek参加者サンプルの作り方を間違えてたかも知れません。
document.selection.SetActivePoint(eePosLogical, 1, 6);//ブルー反転を解除させる
これを付けても同じ結果でした。
確認します。Applek参加者回答ありがとうございます。
解除されているというのはあくまでも見かけ上の表示として解除されているだけです。
実際には影響はまだ残っていますからその後の置換で指定した範囲以外のところにも影響します。
サンプルではこれが確認できるように送ったつもりですがどのように見えたのでしょうか?
後ろの範囲も違う文字になっているはずです。ご確認していただけますでしょうか。
document.selection.Collapse();は見かけ上の色がなくなるというだけです。
なお毎度の質問で共通することなので毎度書きませんが、私は詳しくないので恐縮ですが勘違いである可能性もあります。
メールで画像を送ります。Applek参加者このようなことは無料のお試し期間で試してみる人も居ると思いますので
「無料のソフトにも劣るのか。初歩的な正規表現の検索すらもできないテキストエディターじゃ今後は難しいだろう」と思われて損されていると思います。
なぜ初歩的な正規表現も1年間直されないのか理由も知りたいです。
何か副作用でもあるのでしょうか?Applek参加者お世話になり、ありがとうございます。
Quit();をつけないと選択が解除されないということであればdocument.selection.Collapse();このコードの意味は何なのでしょうか?
二つの組み合わせをしないと解除されないということが一般の人に分かるはずがないと思います。私自身解除されないで後ろにも影響が出るので散々色んな方法を試してどこかに画面にポインターをクリックしたことにするという方法で解除ができることをやっと見つけました。
私自身はこの方法で解除できることで解決していますが、ほとんどの人がこんな方法に気が付くとは思えず「このEmEditorというソフトではできないんだ」と思うだけだと思います。document.selection.Collapse();これ単独で解除させない理由が何かあるのでしょうか?
Quit();を付けたらちゃんと動作しましたという回答は逆に言うとdocument.selection.Collapse();で単独では解除できないことを認めておられるようにも思うのですが、それなのに修正されない理由がわからないです。
私の勘違いの可能性もありますのでそうでしたら恐縮です。Applek参加者回答ありがとうございます。
document.selection.SetActivePoint(eePosLogical, 1, 6);//ブルー反転を解除させる。
これの代わりにQuitでやってみましたら、そこの部分でマクロが止まった結果になりました。
これだとそれ以降のマクロが動作しないまま途中で終わってしまいますためこの方法は使えませんでした。サンプルコードではその部分が再現するかだけのことしか書きませんでしたので動作したように見えるかもしれませんが実際のマクロではそれ以降にも長くマクロの処理は続きます。
そのため途中で動作が止まってしまっては困ります。
この問題はどう解決できますでしょうか?Applek参加者回答ありがとうございます。
サーバにマクロとサンプル文を送らせて頂きました。
もしかしたら書き方が悪いのかと思って以下のようにもしましたが同じく全部の範囲が選択されたままになります。
document.selection.Find(“ゝ[^ゝゞ]{1,1000}?ゞ”,eeFindNext | eeFindReplaceRegExp | eeFindSelectAll,eeExFindRegexOnigmo);// 置換の検索範囲を指定後ろのすべての文字が選択された状態になっています。
document.selection.Collapse();は利かないです。後ろの対象文字まで置換されます。
よろしくお願いいたします。Applek参加者ありがとうございます。
ツール→すべての設定のプロパティのことでしょうか?
「バックアップをバックアップフォルダに保存」などが書かれているところでしょうか?
こちらにバックアップしたいファイルを限定する拡張子の設定などは書いてないのですが別の所に設定がありますでしょうか?
私が希望してますので特定の拡張子やファイル名や行数のファイルに絞って自動バックアップしてくれる機能です。
よろしくお願いいたします。Applek参加者私は最近はEmEditorの質問に関してもほとんどの場合において複数のAIに答えられるかどうかを確認してから質問するようにしています。
私が使い方がわかっていないだけですでに希望の機能があるのかも知れません。
メールやサイトで質問させていただく前に複数のAIでも「EmEditorでこういうことができますか」と同じ質問をしてからにしているのですが複数のAIですら答えてこないことが多いです。
たとえば、キャプチャー番号の\\k<10>この質問の件もあとで見たら、 EmEditorのサイトには書いてあったので、私の見落としでもあります。書いてあることを質問してくるのは迷惑なユーザーと思いますが、前提として複数のAIですらどこもその機能を把握してないというのは、情報や解説があまり出回っていないからだと思います。
解説が少なすぎて優秀と話題のAIですら把握し切れてないことを人間が容易に見つけたり把握するのは難しいです。
EmEditorのマニュアルはその機能を使ったら何ができるのかという解説やサンプル例があまり書いてないのでAIすら把握できてないと思います。情報を探索してくるのはAIの方が圧倒的に優秀で人間は赤子に過ぎないレベルだと思います。
5つ以上のAIがそろって回答できないということは、人間が見つけ出すことはなおさら困難であると思います。
このような場合だとたとえ機能があったとしてもEmEditorのユーザーですらほとんどの人は把握してないと思います。
複数のAIが余裕で答えられる程度のことの質問であれば迷惑な質問になると思います。バックアップは、いかに余計なものをバックアップせずに必要なものだけ丹念に多重にバックアップするかが重要だと思います。
余計なものはバックアップしないための行数制限などはありましたが、まだまだ指定方法は荒いと思います。
たとえば、SSDが突然死亡もありますから、重要な上書き保存だけは同時に他のSSDにもバックアップするとかです。
その場合はハードディスクなどが突然死してもEmEditorで作った重要なファイルは残ります。
メールだと説明していただいても私しか読まないので甲斐がないと思いましたのでこちらで書かせていただきました。
よろしくお願いいたします。Applek参加者ありがとうございます。
ワークスペースのカスタマイズのページで私のやりたいことが、ある程度はできることがわかりました。ただ、かなりおおざっぱな設定しか見当たらないので余計なものをバックアップされることも含めた控えめな設定しか出来ない感じです。
希望しています拡張子や行数ごとの設定やプログラミングファイルのように時間おきの別バージョンを細かく作るなどは見当たりませんでした。個別の拡張子や個々のファイルによってバックアップをコントロールする機能はないでしょうか?
たとえば拡張子ごとのルールやファイル名に何々が付いている場合のみ動作するとかの細かいルール決めです。
何卒、ご協力の程、よろしくお願い申し上げます。Applek参加者ありがとうございます。
それでしたらマクロで作ってツールバーに標準で付けて貰えないでしょうか。
他のテキストファイルと連携できるだけEmEditorのほうが有利と思います。
ユーザーが作っても汎用性が無いと思います。Applek参加者EmEditorにChatHub、MultiGPTのよう複数のAIに質問を送って返ってくる機能を御願いできませんでしょうか。
Applek参加者お世話になっております。
この質問、要望はEmEditorバージョン4から、とっくに可能な機能でした。
まだまだEmEditorの機能は、わかってなかった、使いこなせてないようです。
以下の方法で、繰り返し無しですぐ置換できました。
見た人が誤解されないように書いておきます。document.selection.Find(“ここから.*?ここまで”,eeFindNext | eeFindReplaceRegExp | eeFindSelectAll,0);// 置換の検索範囲を指定
batch_list = editor.filters;
batch_list.AddReplace(“あおもり”,”青森”,eeFindReplaceRegExp | eeFindReplaceCase,0);// 置換する内容
document.selection.BatchReplace(batch_list,eeFindReplaceSelOnly | eeReplaceAll,0);// 検索範囲のみ置換マニュアル
https://www.emeditor.org/ja/macro_selection_selection_replace.html
https://www.emeditor.org/ja/macro_selection_selection_find.htmlApplek参加者お世話になっております。
範囲指定機能があると、複雑な一般には難しい書き方ではなく、特定部位の削除も実質的に一行で初心者レベルですぐ書けるようになります。
従来は、^.*$ こんな書き方は、すべて文書のあらゆるところにマッチするので特定部位に何か変更するとか消すことに対してムチャクチャ難しい書き方や正規表現は動作が重くなりました。
ビックデータではほとんど不可能でした。
特定部位に対する編集が劇的に簡単に速くなります。☆~★の最短一致の範囲指定のコードを記述
batch_list.AddReplace(“^.*$\\n”,””,eeFindReplaceRegExp | eeFindReplaceCase,0);// ☆から★の間に限定してすべての文字を消す いらない範囲のみ消す
範囲指定を閉じるコード 最長か最短かのフラグApplek参加者お世話になっております。
私が正規表現などの使い方、書き方を知らないだけかも知れませんが、正規表現でビックデータの編集で毎回非常に困るのは、特定の範囲のみに何かしたいときに非常に苦労することです。
先の事例のように☆~★の範囲だけの範囲で何か変更したいときに難しいです。
その範囲以外の部分に適応されると困るため単純に
batch_list.AddReplace(“◎$”,”▼”,eeFindReplaceRegExp | eeFindReplaceCase,0);
こんなふうに書くわけにはいかないです。文書のすべての部分にマッチします。以下のように書くとビックデータとなると絶望的な遅さで置換不可能です。
batch_list.AddReplace(“\\n”,”⏎”,eeFindReplaceRegExp,0);// シングルラインモード
for( i = 0; i < 20000; ++i )
batch_list.AddReplace(“(☆[^⏎]*?)◎⏎(.*?★)”,”\\1▼⏎\\2″,eeFindReplaceRegExp | eeFindReplaceCase,0);// ◎を▼に変更
batch_list.AddReplace(“⏎”,”\\n”,eeFindReplaceRegExp,0);// シングルラインモード解除もし以下のように範囲指定だけで書ければ、数行で済み、記述も数行で文章丸ごと適応させるときと同じ記載で済みます。
範囲指定のコード ☆~★の記述 最短か最長を指定
batch_list.AddReplace(“◎$”,”▼”,eeFindReplaceRegExp | eeFindReplaceCase,0);// 通常の文書まるごと適応のときと同じ正規表現コード
範囲指定終わりのコードこのような一瞬で特定範囲だけ限定して普通の正規表現で動作させる書き方の方法はありますでしょうか?
よろしくお願いいたします。Applek参加者お世話になっております。
ご回答ありがとうございます。
御厚意、感謝しております。Applek参加者間違えました以下のコードで警告なしです。”たろう”は変換されないまま気がつかないです。
batch_list = editor.filters;batch_list.AddReplace(“たろう”,”太郎”,eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list = editor.filters;
batch_list.AddReplace(“じろう”,”次郎”,eeFindReplaceRegExp | eeFindReplaceCase,0);document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo | eeExFindMulti);
Applek参加者お世話になっております。
もうちょっと汎用的に言いますと正規表現や削除以外も含めてあらゆる編集機能を範囲を指定して、その範囲だけに限定した編集が容易に可能になる機能です。
範囲を指定したコードで閉じた部分は、その範囲にだけ適応して動作するというものです。
従来は、特定のことをすると文書全体に適応されましたので特定の範囲だけに限定した編集が難しかったです。
最短一致と最長の範囲で指定できる機能です。
よろしくお願いいたします。 - 作成者投稿