BOX選択についてNo.37482
さん 19/08/16 12:49
 
 お世話になります。

 BOX選択中にキー入力すると、入力した内容が先頭に挿入されるかと思います。
 この際、空行部分には入力した内容を挿入しないようにしたいのですが、何か良い
方法はないでしょうか。

 以上、よろしくお願いいたします。

[ ]
RE:37482 BOX選択についてNo.37484
秀丸担当 さん 19/08/16 16:23
 

たいぶ深いところですが、[その他]→[動作環境]→[編集]→[高度な編集1]に「BOX選
択中にキーを押すとその文字を各行に挿入する」の右側に「...」ボタンがあり、こ
こにBOX選択時の入力の設定があります。

「改行よりも後ろにBOX選択がある行にも挿入する(通常モード時)」または「改行
よりも後ろにBOX選択がある行にも挿入する(フリーカーソルモード時)」をOFFにす
ると、空行などの改行以降の部分には入力されないようになります。

[ ]
RE:37484 BOX選択についてNo.37492
さん 19/08/16 22:04
 
 お世話になります。

>「改行よりも後ろにBOX選択がある行にも挿入する(通常モード時)」または「改行
>よりも後ろにBOX選択がある行にも挿入する(フリーカーソルモード時)」をOFFに
>すると、空行などの改行以降の部分には入力されないようになります。

 該当の設定を確認してみましたが、オフになっているようでした。
 こちらで試した感じだと、うまく動いていないようです。
 例えば、

a
b
c

d
e
f

という文字があったとして、「a」の位置でBOX選択を開始して、「f」の位置でス
ペースを入力すると、空行にもスペースが入力されてしまいます。
 ちなみに、改行文字の位置でBOX選択を開始した場合は、空行にスペースは入力さ
れないようでした。

 以上、よろしくお願いいたします。

[ ]
RE:37492 BOX選択についてNo.37493
秀丸担当 さん 19/08/19 08:52
 

確かに空行であっても行頭の場合は挿入されました。
「改行よりも後ろにBOX選択がある行にも挿入する」は、設定名の通り改行よりも後
ろのことなので、そういう仕様ということになってしまいます。
なんとかするとしたら、それなりのマクロを作るか、目的の部分だけ複数選択される
ような操作をするしかないと思います。
例えば、検索ダイアログで、正規表現で「^(?=.+)」を検索すると、行頭にヒットし
ます。
検索ダイアログで「すべて検索 - 複数選択」の操作をすると、ヒットする部分が全
部選択されるので、その状態で入力すると一応できると思います。

[ ]
RE:37493 BOX選択についてNo.37503
さん 19/08/20 17:29
 
 お世話になります。

>確かに空行であっても行頭の場合は挿入されました。
>「改行よりも後ろにBOX選択がある行にも挿入する」は、設定名の通り改行よりも後
>ろのことなので、そういう仕様ということになってしまいます。
>なんとかするとしたら、それなりのマクロを作るか、目的の部分だけ複数選択され
>るような操作をするしかないと思います。

 やはりそうですか。
 少しめんどうですが、検索等で頑張ってみます。
 ありがとうございました。

 以上、今後ともよろしくお願いいたします。

[ ]
RE:37503 BOX選択についてNo.37504
ヒラメ さん 19/08/20 19:22
 
陸さんこんにちは。横から失礼いたします。

ちょっとマクロを組んでみました。BOX選択後に実行すると、選択範囲各行の範囲開
始位置より右に何も文字がない場合は範囲から除外する動作をします。

もしよければ試してみてください。


//マクロここから末尾まで

//複数選択対応マクロのおまじない
setcompatiblemode 0x00100000;

if(!rectselecting){
  //BOX選択中でなければ何もしない
  endmacro;
}else{
  //選択範囲を覚えておく
  #x1 = seltopx;
  #x2 = selendx;
  #y1 = seltopy;
  #y2 = selendy;
  escape;

  #y=#y1;
  // BOX選択範囲各行内の処理ループ
  while(#y <= #y2){
    //選択範囲開始点xの次の文字を取得
    if(gettext(#x1, #y, #x1+2, #y, 1) != ""){
      moveto #x1, #y;
      beginrectmulti;
     
      // 選択範囲の先頭のみを選択しなおす(キー入力で挿入する)
      moveto #x1, #y;
     
      // 選択範囲をそのままにする(キー入力で上書きされてしまう)
      //if(strlen(gettext(#x2, #y, #x2+1, #y, 1)) == 2){
      //  // 範囲末尾の全角文字が半角分はみ出ている場合、半角分範囲を広げる
      //  moveto #x2+1, #y;
      //}else{
      //  moveto #x2, #y;
      //}
     
      endsel;
      reservemultisel;
    }
    #y = #y + 1;
  }
  selectreservedmultisel;
}

[ ]
RE:37504 BOX選択についてNo.37506
さん 19/08/22 09:25
 
 お世話になります。
 返信が遅くなり、申し訳ありません。

 ヒラメ様、わざわざマクロを作っていただき、ありがとうございます。
 いただいたマクロを試してみました。
 一手間増えますが、かなりよい感じです。
 しばらく利用してみます。
 ありがとうございました。

 以上、今後ともよろしくお願いいたします。

[ ]