アーカイブ

2006年 8月 10日 のアーカイブ

行頭の認識については、鬼車が適切に動いてくれるので、少々の変更で対処出来た。
というか、元々の動作が置換の方の動作であって、
それを無理矢理に検索の方の動作に変更するため、あたしが小細工している。
その小細工を、置換の時だけ働かないようにするだけで望みの動作となった。

その件もそうだが、ともかく検索の動作と置換の動作は別々に考えるべきと意識改革。
以前も、検索で逆方向に進む機能は必須だが、置換では求める人間の方が変だと結論を出した。
反対方向に置換開始出来ないことによる不満なんて、どんなときに出るものか不明。
逃げ道としても、範囲だけを考えるなら、Shift+Ctrl+Homeしてから範囲置換すれば良い。
しかし秀丸は、逆方向にも置換をやらせるインターフェースがあるし、
そして秀丸チルドレンも逆方向への置換を実装しているわけだが、
今となっては不自然な使い方だと思うわけだ。

Emも秀丸も、前回起動時の検索ワードまで記憶してるらしく、
いきなりF3押しても既に閉じた窓での検索を思い出してちゃんと動作してくれる。
SDI起源のエディタだから実に納得できる動作だな。サクラもそうだし。
真魚はいちいち閉じないで起動しっぱなしだから、
昨日の検索したものを今日もF3で思い出させるより、使ってる本人が覚えてないわけで、
これは感心したけどパクるほどではない。

検索が終了してもまた先頭に戻る見たいな機能については、実際に必要だ。
EmEditorは、検索のみループでき、置換はループできない。
秀丸は、次の秀丸も続けて検索ってのがあるみたいで、これがループ検索なのだが、
複数の秀丸が起動してる場合はループとして機能し、一つしか起動してないと機能しない。
置換にもループ検索があるのはサクラエディタだ。
オプションやボタンがたくさんありすぎて、見てると吐き気がするので、その動作確認は省略。
バカでスマン。

で、考えてみたのだが、Emやサクラのように、置換ダイアログ出しっぱなしで置換するなら、
ループさせるという選択肢はあった方が便利だろうが、
真魚のような置換ダイアログではちょっと合わないかなと思った。
あたしみたいなバカはサクラエディタじゃ動作確認も出来ないわけで、
バカ狙いの真魚はそういう方法をとるわけにはいかないだろうからな。
↓そこでこれに回帰する。
>行末に達したら警告を出して先頭行にジャンプ
「警告」っていう所にどうして?と思ったけど、真魚は置換終了時に何箇所どうしたと表示するが、
なるほど、そのときの表示で、まだ置換を続けるか選ばせるのはありかも知れない。
しかし例えば指定範囲内の置換を終えてループってどこに戻る?とか、
そもそも置換終わったのに「もう一回やる?」って必要か?ってこと自体考えてしまうがな。
とりあえず置換の方は保留だな。

検索については、EmEditor見たいに、警告無しの方がスマートだろう。
Googleツールバーではループ検索オフにすらできないわけだから、
真魚もインターフェイス無しでループ検索させてみてはどうかと想像してみている。
下に向かって検索していたものが、急に上に飛べばやはり焦るかな。

あとは、EmEditorは入力窓の横に正規表現の補完メニューがあって親切だと思った。
それと、EmEditorにも秀丸にも、ツールバーに置換ボタンが載ってない。
あっても良いけどなくても良いものと言うことで、そこはやらないでおきたい。

さて、久しぶりにお題が出ている。
今回は正規表現が絡むので、メモ帳での動作確認は出来ないが、
幸いにも秀丸とEmEditor Freeが同じ動作をしたので、これを正解と思って良いだろう。
何をやるのかというと、正規表現で行頭を表す^(ヘの字記号)の扱いだ。

本題は置換なのだが、内部では検索して引っ掛かった部分を置き換えてるわけだから、
置換だけじゃなくて検索の動作も見てみた。
この時点で既に秀丸とEmEditorは同じ動作なわけだから納得できるお手本だ。
まず、文字入力が出来る位置を示す縦線の点滅、すなわちキャレットが、
一番上の行の一番左端に置いてある状態を、お手本は1行1桁という表現をしているので倣う。
実際は1行目の1文字目の手前に縦線が引いてある。
1行2桁なら、1行目の1文字目と2文字目の間に縦線がある。
あたしの感覚としては、1行目0.5桁、1行目1.5桁と表現したい気持ちもどこかにある。
が、ともかく、EmEditorや秀丸の初期状態(設定で変えれるかも知れない)で表現は統一する。
その、1行1桁の位置から、正規表現で行頭を表す^を検索してみると、
お手本は両方とも2行1桁の位置で0文字選択がヒットする。真魚も同じ。
^を使って1行1桁をヒットさせるには、逆方向への検索を行うしかない。
つまり、初めに1行1桁の位置にいる状態で既に、^の検索結果と同じ場所という解釈だな。
1行1桁から下へ検索させたのに、そのまま1行1桁で0文字にヒットするわけがない。
せめて1行1桁から1行2桁にかけての1文字選択に動いて欲しいわけだ。
さもなくば、^を検索して、何度「次を検索」させても先に進まないからな。
と言うわけで、お手本の動作も真魚の動作も、検索のみなら問題ないだろう。

ところがお手本は、置換の時は別の動作をするからお手本なのだ。
1行1桁から置換を開始して、1行1桁にヒットしちゃう。
あたしゃ素人な発想から、検索と置換は同じ動作をしなきゃいけないと思いこんでいた。
しかも、秀丸は数年ぶりのつい先日インストールだし、Emは置換で正規表現が使えなかった。
この行頭の件だけではなく、置換の正規表現については検索とは別に、
もっと詳しく研究して作り直す必要があると、今は考えている。
でも、行頭の0文字を0文字に置換とか指定されたら無限ループにならずに済む策はあるのか?
という不安もあって、なんか後回しにしそうな予感。

さて、そんなこともあって秀丸やEmEditor Freeで検索と置換をやってみたのだが、
この二つは検索のダイアログに「上を検索」ボタンと「下を検索」ボタンがあるのね。
真魚はメモ帳をお手本にして、上へか下へかいずれかにポッチして「検索」ボタンだが、
しばしば、先ほど上へ検索したのに忘れて、下へ行くと思って動作が混乱することがある。
お手本のように、上に行くか下に行くか二つのボタンがあれば絶対間違わない。
あと、両方とも、検索ダイアログボックス上からでもF3とShift+F3が使えるのがいい。
これもメモ帳では出来ない。

これまで通り、メモ帳の動作優先の方針は変えたくないわけだから、
なんでもかんでもEmEditorや秀丸にあわせるというわけではないが、
ちゃんと納得できる動作で、しかも複雑にならない場合だけ、
メモ帳以外派にあわせても良いかもね。
ちなみにUndoの動作は、メモ帳見たいに一気にではなく、1文字ずつの方が断然いいと、
プロポーショナルフォント対応してからDelキーを1回多く押しすぎることが多くて、しみじみ思う。