- 作成者投稿
- 2011年7月26日 8:18 am #10471Autumn参加者
お世話になっております。
置換ダイアログでは、以前設定した検索、置換文字列の履歴がいくつか、記憶されているのですが、新しい文字列を入力すると、古い順から削除されてしまいますよね。
せっかく、履歴には、検索文字列と置換文字列とその時の設定がセットで記憶されているのですから、何らかの形で任意で残せるようにできたらなぁと思います。
正規表現のテストであれや、これや、試していると、よく使うものが履歴が消えてしまうことが多々ありまして、その度にメモをたよりに設定しなおしている状況です。
ご検討いただけたらと思います。
2011年7月26日 5:34 pm #10472Yutaka Emuraキーマスターkanon 様
いつも EmEditor Professional をお使いいただき、誠にありがとうございます。
次のようなマクロを書くと、複数の置換を一度に実行できるようになります。
document.selection.Replace( “find 1”, “replace 1”, eeReplaceAll );
document.selection.Replace( “find 2”, “replace 2”, eeReplaceAll );
document.selection.Replace( “find 3”, “replace 3”, eeReplaceAll );しかし、将来のバージョンでは、このような置換機能の改善も検討いたします。
貴重なご意見ありがとうございました。
他にもご質問がございましたら、ご遠慮なくご連絡ください。
今後もどうぞよろしくお願い申し上げます。2011年7月28日 4:47 pm #10473Autumn参加者アドバイス、ありがとうごごいます。
貴社ソフトでは、
置換ダイアログにて、「正規表現を使用する」にチェックをいれ
「検索する文字列」の項目の「>」というマークのボタンをクリックすると
ずらっ、と説明付きの正規表現のリストが表示されて
非常に重宝しているのですが上記のような形で、ユーザーが任意の名称で
よく使う正規表現を登録できたらいいのになとふと、思いまして。ヘルプなしで正規表現がぱぱっと書ければ
問題ないのですけれども・・気長にお待ちしておりますので、よろしくお願いします。
2011年7月29日 4:05 am #10474Yutaka Emuraキーマスターkanon 様
いつも EmEditor Professional をお使いいただき、誠にありがとうございます。
ご希望のような機能も将来のバージョンで検討します。
貴重なご意見ありがとうございました。
他にもご質問がございましたら、ご遠慮なくご連絡ください。
今後もどうぞよろしくお願い申し上げます。2011年8月4日 12:33 am #10480Delフサ参加者EmEditor Plugin ReplaceText.dll Readme
http://delfusa.main.jp/delfusafloor/download/replacetext/readme.html私自身は重宝しています。
正規表現も使えます。2011年8月4日 11:42 am #10481Autumn参加者ご親切にありがとうございます。
教えていただいたプラグインは一括で複数の置換を実行するという機能を探していた時に、一度参照したことがあったのですが、その時は使い方がよくわからず、断念しましたが。
おっしゃるとおり、使いこなせれば、私の要望に近いことも可能ですね。再度挑戦してみます。
2011年8月6日 4:00 pm #10487Autumn参加者本来は、プラグインのフォーラムでお聞きするべきですが、よく使用されているとのことですので、ご存知でしたら教えてください。
置換前 あああ
いいい
置換後 //あああ
//いいいとしたい場合
ReplaceText.dllでは
行頭に//を追加(行の始め)タブ^⇒//タブ/r
と表記しても置換前 あああ
いいい
置換後 //あああ
いいいとなり、最初の行のみ//が追加されます。
すべての行に//を追加したい場合は、どう表記するのでしょうか。ReplaceText.dllプラグインの正規表現はEmEditorとは異なる部分があるとのことで、明記されたホームページやそのホームページを一部日本語に抜粋したページを参照しましたが、わからず、それならば、実践でといろいろと試してみたのですが・・。
2011年8月8日 5:19 am #10488Delフサ参加者こんにちは。
私がプラグインの作者なので、よく使用しているのですが
正規表現オプションはあまり使ってないです。どういう用途で正規表現を使うのでしょうか…
使用例を教えて欲しいです。正規表現にはTRegExpというライブラリを使っていましたが、その部品の作者が行方不明になってしまっているようです。
調べたところ、日本語ヘルプによると次のように書かれていました。>デフォルトでは “^” は入力文字列 / テキスト中の先頭に、”$” は終端にマッチすることのみ保証されます。間にあるラインセパレータ (改行) は “^”, “$” にマッチしません。
>しかし入力した文字列を複数行のバッファとして扱いたい場合、つまり “^” をあらゆる改行の直後にマッチさせ、 “$” を改行の直前にマッチさせたいことがあります。モディファイヤ /m をオンにするとそのように動作します。ということのようで
プラグイン側でモディファイヤ/mというのをONにする必要があるようです
可能なら、近いうちにプラグインを改造してみます。改造前の対策として、
正規表現行頭置き換え[TAB]^⇒//[TAB]rn⇒rn//[TAB]/rこのように設定していただくのはいかがでしょうか?
動作としては、お望みのものになります。もしくは、行頭挿入でしたら
http://delfusa.main.jp/delfusafloor2/download/download_f.html
の、InsertQuoteプラグインを使っていただくほうが使い勝手がよいと思います。また、改造する場合
他の部品に乗せ変えたり
EmEditor標準の正規表現文字列置き換え機能を利用した機能になるかもしれません。よろしくです。
2011年8月9日 3:32 am #10489Autumn参加者お世話になります。
正規表現の用途としましては、少し複雑な(私にっては)
正規表現で置換する処理を
メニュー一発で呼び出せるようにしたいのです。たとえば、
●指定文字の指定番目までの文字列の直前にタブを挿入
指定文字列 一番目の「検索 (^[^「]*)「
置換 1t「●abを含んで、かつ、bcを含んで、かつ、cdを含む行を検索する。
^(?=.*ab)(?=.*bc)(?=.*cd).*$
といったものを登録する、とか。
今のところ
事前にメモしておいたものを参照して
EmEditorの置換ダイアログにコピー&貼り付けて・・としています。もっと単純な正規表現では
行末に強調表示のインポート用CSVファイルとするため
,3,0,0,0,0,0,0(青)
,3,0,0,0,0,0,0(蛍光黄色)と置換するよう。色分けにメニューを作っても便利そうですし。
マクロに登録すれば、一行マクロになり、
それをたくさん作る方法も考えましたが
マクロが山ほどできて、管理が大変になりますし
呼び出すのも大変です。ReplaceText.dllプラグインならば
段階わけにメニュー表示して、分類できますし
今までメモしてきたたくさんの正規表現を
登録するのに使いたいと思っているのです。EmEditor標準の正規表現文字列置き換え機能を
利用した機能になるなら
私にとっては大歓迎です。改良していただけると大変ありがたいので
よろしくお願いいたします。2011年8月9日 4:44 pm #10490Delフサ参加者暫定的においてみました。
http://delfusa.main.jp/temp/ReplaceText.zipたぶん、これで大丈夫だと思うのですが、どうでしょうか。
試してみてください。行頭文字指定は動きました。
単語単位指定や、大文字小文字対応も動くと思うんですが…
以下、
開発者にしか分からないですが、ソースはこんな感じ。
コンパイラをD2007からDelphiXEに変更したのですが、ちゃんと動いているみたい。メイン抜粋
EmReplaceFlag :=
FLAG_FIND_REG_EXP orFLAG_REPLACE_SEL_ONLY or
FLAG_REPLACE_ALL or
FLAG_FIND_NO_PROMPT or
FLAG_FIND_CLOSE;if ReplaceFlagWord then {←単語単位指定}
begin
EmReplaceFlag := EmReplaceFlag or FLAG_FIND_ONLY_WORD;
end;
if ReplaceFlagCaseCompare = ccCaseSensitive then {←大小文字区別指定}
begin
EmReplaceFlag := EmReplaceFlag or FLAG_FIND_CASE;
end;for i := 0 to Length(OldPatterns)-1 do
begin
Editor_ReplaceW_Delphi(hwnd,
OldPatterns, NewPatterns, EmReplaceFlag);
end;
Editor_ExecCommand(hwnd, EEID_ERASE_FIND_HILITE);関数部分
procedure Editor_ReplaceW_Delphi(hwnd: HWND;
const OldPattern, NewPattern: WideString;
nFlags: Longword = FLAG_REPLACE_ALL+FLAG_REPLACE_SEL_ONLY);
var
WideStr: WideString;
begin
WideStr := OldPattern + #0 + NewPattern + #0;Editor_ReplaceW(hwnd, nFlags,
PWideChar(WideStr));
{↓検索強調文字の解除}
// Editor_ExecCommand(hwnd,EEID_ERASE_FIND_HILITE);
end;2011年8月10日 2:01 pm #10491Autumn参加者fusa様
早速の対応ありがとうございます。
試したものは、単純な表記のものばかりで
数も少ないですが、
動作を確認いたしました。
下記、ReplaceText.datより抜粋正規表現
行頭に//を追加 ^⇒// /r
行頭に3を追加 ^⇒3 /r
行頭の●以前を削除 ^.*●⇒ /r
行頭から一番目の)以前を削除 ^[^)]*)⇒ /r強調文字列インポート用
行末に,3,0,0,0,0,0,0(青) $⇒,3,0,0,0,0,0,0 /r
行末に,0,0,0,0,0,0,0(蛍光黄色) $⇒,0,0,0,0,0,0,0 /r単語単位動作テスト
AAA→BBB AAA⇒BBB /w
宇宙→space 宇宙⇒space /w
space→宇宙 space⇒宇宙 /w大小を区別して変換
AAA→BBB AAA⇒BBB大小関係なく変換
AAA→BBB AAA⇒BBB /i蛇足ですが、一度、プラグインってどんなものなんだろうと
ソースをのぞきにいったことがあります。メインソースってこんなふうになっているのですね
if ~ then ~end
とか、
forとかの繰り返しとかに見覚えがある程度ですが。これから、改良していただいたプラグインを
どんどん活用したいと思います。
何か気付いた点がありましたら、報告いたします。今一度お礼を申し上げます。
本当に助かりました。ありがとうございます。2011年8月11日 4:22 am #10496Delフサ参加者動いてよかったです。
諸事情で
DLLのサイズが800KBとプラグインにしては大きくなりすぎてしまったので、もう少しサイズ減らしてから自分のページで正式リリースしてみます。私はDelphiって言語を使っています。
EmEditor本体や他のプラグインはC++言語で作られることが多いですね。
C++だと、if(){} else {} こんな感じでしょうね。一度、プラグインの動作する開発環境を作ってしまえば
私にはマクロより作りやすいので機能拡張は全部プラグインでやっています。使っていただいて何よりです。
もう少ししたらDelphiXE2という64bit版がリリースされるらしいので、64bit対応のプラグインも用意していけそうですが、開発環境のバージョンアップ費用がちょっと気が重いところです。
誰かのウチでコンパイルだけさせてもらったりとか、そういうのじゃいけないもんなのですかね。
- 作成者投稿
- このトピックに返信するにはログインしてください。