検索後に、左カーソルキーを押したときのキャレットの位置

  1. C:\USER
    という文字列があるときに、「\」を検索すると、祖の文字列が選択されますが、
    その状態で左カーソルを押すと、「:」「カーソル位置」「\」ではなく、
    「カーソル位置」「:」「\」となってしまいます。

    (つまり、検索後の左カーソルキーで2文字動いたような、体感になります)

    正規表現がOn/Offでも、インクリメンタルサーチOn/Offでも同じでした。

     |  tak  |  返信
  2. 検索はマッチした文字列を範囲選択し、選択範囲の【左端】にキャレットを置く仕様になっていますので、仕様的にはその挙動で正しいです。

    メモ帳などは検索後に選択範囲の【右端】にキャレットが移動しますが、選択範囲の【左端】にキャレットを置いたほうが検索前のキャレット位置からの移動距離が小さくなるので無駄なスクロールを抑えられるという点と、検索でマッチした文字列の先頭が見えるほうが文章中の検索文字列の位置を把握しやすいという点において効率的です。

    秀〇エディタさんなどでもこの仕様が採用されていますので、慣れてくるとこちらのほうが便利なんじゃないかなーと思います。

     |  Kuro  |  返信
  3. >> tak さん
    横から失礼します。
    Mery では「次を検索」したときの選択範囲のキャレット位置や、「あああああ」にたいして「ああ」で検索したときの挙動が TeraPad やサクラとは違うので最初はとまどいましたが、あっけなく慣れてしまった sukemaru です。

    マクロライブラリの「キーアサイン集」や『小マクロ集』のページにある「範囲選択を解除 (スクロールしない)」マクロにショートカットキー [Esc] を割り当てるとちょっと便利になるとおもいます。 :)
    デフォルトのキーアサインだと [Esc] キーは、エディタがアクティブなとき何も割り当てられていませんし、IME での入力中や子ウインドウまたはアウトラインがアクティブなときにもとくに悪さをしないはずなので、けっこうお勧めです。

    個人的にはわりと頻繁に使う操作なので、「範囲選択を解除」機能はマクロではなく標準コマンドでほしいぐらいだったりします(マクロだと [F4] での「最後に使ったマクロ」の履歴にいちいち残ってしまうので)…。 :|

    https://www.haijin-boys.com/wiki/マテリアルデザインっぽいアイコンと『小マクロ集』#範囲選択を解除_(スクロールしない)
    https://www.haijin-boys.com/wiki/キーアサイン集#選択範囲を解除_(非スクロール)

    #title = "選択解除 (非スクロール)"
    #tooltip = "範囲選択を解除 (スクロールしない)"
    // アクティブなキャレット位置のまま選択解除する
    var s = Document.Selection;
    if ( s ) {
      var sx = ScrollX,  sy = ScrollY;
      s.SetActivePos( s.GetActivePos() );
      ScrollX = sx;  ScrollY = sy;
    }
     |  sukemaru  |  返信
  4. kuroさん
    なるほど理由があっての仕様なのですね。慣れてみます。

    sukemaruさん
    仕事がらメモ帳を使わないといけないケースもあり、混乱しそうになったら、
    ぜひこのマクロを使わせていただきます。

     |  tak  |  返信
スポンサーリンク