V4.80β2で置換後の文字を入力してないのNo.00415
kiwikazuya さん 07/05/29 10:36
 
中国在住のkiwikazuyaです。

V4.80β2で置換後の文字を入力してないのに改行されるのは仕様でしょうか?

たとえば、行頭行末のタブと空白を削除するのに
(^\t| \t$|\t$| $| \n$)という正規表現で検索して、
置換のところは、空白となっている時に実行すると、
たしかに行頭行末のタブと空白の削除はできるのですが、
改行が挿入されてしまい困っています。

この置換のところは、空白となっているのですが、
マウスで右クリックをして「削除」すると、なぜだか、
改行は挿入されません。

?です。
よろしくお願いいたします。

[ ]
RE:00415 V4.80β2で置換後の文字を入力しNo.00416
秀まるお さん 07/05/29 13:07
 
 質問されてることの意味がよく分かりませんけど…。

 置換コマンドでの「置換(E):」の所に何も入れずに置換を実行すれば、何らか
の文字列が削除される動作にはなると思いますけど、改行コードが勝手に挿入さ
れるってことは無いはずだと思います。

 具体的な例を書いてもらわないとなんとも言えないですけど。少なくともこち
らで、例えば行頭から「あああ」と書かれていてその後ろに半角空白が1つある
ような所に対して置換コマンドを実行したら、行末にある半角空白1つが削除さ
れる動作をして、それでおしまいです。改行が増えたりはしませんでした。

 「置換の前に確認」をONにして確認メッセージで「置換」ボタンや「置換+
次」ボタンを押してみたり、または「置換」ダイアログボックスの「全置換」ボ
タンを押してみたりしても、やっぱり同じ結果みたいですけど。

 もしかして中国語のメールで何か特定の中国語文字列を含む行に対してやった
時にダメだとか、いろいろ細かい条件があるんじゃないかと思います。

[ ]
RE:00415 V4.80β2で置換後の文字を入力しNo.00417
EA11R2 さん 07/05/29 13:14
 

EA11R@一般ユーザです。

>たとえば、行頭行末のタブと空白を削除するのに
>(^\t| \t$|\t$| $| \n$)という正規表現で検索して、
>置換のところは、空白となっている時に実行すると、
>たしかに行頭行末のタブと空白の削除はできるのですが、
>改行が挿入されてしまい困っています。
この正規表現からうける置き換え後のイメージは、条件を満たす改行が削除され
たけど、削除された改行の次の文字も改行だったので、改行が繰り上がって、そ
の結果、改行が挿入された風に見えるんじゃないのかな、なんですが…。
実際、試した結果もそのイメージどおりでしたし。
英語と日本語のメールで、なので、もしかしたら、そこが影響しているかもしれ
せんけど。

ちなみに、WindowsXP Pro. SP2 + 4.80β2 と言う環境です。

[ ]
RE:00415 V4.80β2で置換後の文字を入力しNo.00418
さん 07/05/29 13:37
 
ま@一般ユーザです。

行頭/行末のタブor空白を削除したいってことなら
(^[\t ]+|[\t ]+$)
とかでいいと思います。

>この置換のところは、空白となっているのですが、
>マウスで右クリックをして「削除」すると、なぜだか、
>改行は挿入されません。

そもそも、置換(E)のインプットボックスに何かしら文字が入っていて
かつその文字を選択してない限り、右クリックメニューの「削除」は
無効になりますね。グレイアウトしていて選択できないです。

削除ができるってことは、そこに何かしら文字があるんだと思います。

[ ]
RE:00418 V4.80β2で置換後の文字を入力しNo.00419
kiwikazuya さん 07/05/29 14:07
 
ま@一般ユーザさん、正規表現とアドバイスありがとうございました。

>そもそも、置換(E)のインプットボックスに何かしら文字が入っていて
>かつその文字を選択してない限り、右クリックメニューの「削除」は
>無効になりますね。グレイアウトしていて選択できないです。
>
>削除ができるってことは、そこに何かしら文字があるんだと思います。
前回の置換文字が\nでした。

そこで文字コードは日本語で、下のような文字列を何行か作成しました。
 879  
  879  
  879  
  879  
  879  
それで、検索文字は、(^[\t ]+|[\t ]+$)で、
1,置換は白い状態で、そのまま
2,置換は白い状態だけど、マウス右クリックで削除が選択できる状態
    なので削除を選択して削除
3,置換は白い状態で、Delキーを押して削除
4,置換は\nに設定
という条件で置換を実行した結果は次の通りです。
(白い状態は、文字が入力されていないときの状態です。)

1,改行が挿入されます。
2,3,改行は挿入されません。
4,改行が2つ挿入されます。

それから、置換の文字列を文字が入力されていない状態で、Delキーで
削除してから実行したあとに、上記1,を実行すると、改行は
挿入されません。また、置換のインプットボックスをマウスで
右クリックしても削除はグレーとなっていて、選択できる状態では、
ありませんでした。

よろしくお願いいたします。


[ ]
RE:00419 V4.80β2で置換後の文字を入力しNo.00420
秀まるお さん 07/05/29 14:31
 
 状況によると、置換ダイアログボックスの

 置換(E): [_________________]

 の所に改行文字が入ってしまってるんだと思います。再現させる方法としては、
例えばマクロで、

 replacedown "xxx", "\n";

 みたいなのを一回実行して、それから「検索・置換...」を実行するとそうい
う状態になるようです。

 これはこれで仕様だと思います。なので、置換コマンドで文字列削除したい時
は、「置換...」を実行した時の「置換(E):」の欄を確認して、何か文字列が入
ってそうな時はそれを削除してから実行するという、そういう風にして欲しいで
す。

[ ]
RE:00419 V4.80β2で置換後の文字を入力しNo.00421
kiwikazuya さん 07/05/29 14:31
 
秀丸エディタV7.00β9でも、同じ結果となりました。
検索文字(^[\t ]+|[\t ]+$)、置換のところでなにも文字が入力されていないように
見える状態で、置換を実行すると、やはり改行が挿入されました。
このとき置換のインプットボックスをマウスで右クリックすると、
削除が選択できる状態でした。

よろしくお願いいたします。

[ ]
RE:00420 V4.80β2で置換後の文字を入力しNo.00422
kiwikazuya さん 07/05/29 14:34
 
> これはこれで仕様だと思います。なので、置換コマンドで文字列削除したい時
>は、「置換...」を実行した時の「置換(E):」の欄を確認して、何か文字列が入
>ってそうな時はそれを削除してから実行するという、そういう風にして欲しいで
>す。

仕様と言うことでは、仕方ないです。
これからは、文字列が見えなくてもDelキー等で削除する1動作を
加えて、作業をするようにいたします。

ありがとうございました。

[ ]
RE:00422 V4.80β2で置換後の文字を入力しNo.00423
秀まるお さん 07/05/29 14:46
 
 今までWindows2000でテストしてたんですが、WindowsXPでテストしたら、この
「改行」の文字は目で見て判別出来ないというか、横幅がほとんどゼロの文字と
して出てきてしまうようです。

 なので、これではたしかにユーザー様の方で勘違いされてしまうことがあるよ
うです。

 秀丸担当の方にこの現象について連絡したので、一応何か対応するかもしれま
せん。

 あと、そもそもこういうトラブルが起きる原因として、マクロで"\n"への置換
をやってるせいかと思います。そういうマクロがあるとしたら、それを

   replace "xxxxx", "\\n", regular;

 みたいにするか、または

   $replace_backup = replacebuffer;
   ...
   ...
   ...  マクロの処理
   ...
   ...
   ...
   setreplace $replace_backup;

 みたいにして、置換(E):の中身が変わらないようにすることをお勧めします。

[ ]