BOX選択


 BOX選択を使うと矩形領域の単位で文字列の移動やコピーが可能です。

 エディタやワープロでは文字列をマウスまたはキーボードで選択し、それを削除したり、 クリップボードにコピーしたり、クリップボードにある文字列をカーソル位置に貼り付けたりという操作が可能です。 これはとても有用な方法ですが、選択の単位は連続する文字の並びで、画面上の位置とは無関係です。 画面上の位置関係を保ったまま、文字列を削除、ペーストしたい場合もあります。
 例えば、以下はC/C++プログラムの一部です。

    #define ID_REPLACE                      3
    #define ID_REPLACEALL                   4
    #define IDD_ABOUTBOX                    100
    #define IDS_PROPSHT_CAPTION             102
    #define IDD_PROPPAGE1                   103
    #define IDD_PROPPAGE2                   104
    #define IDD_PROPPAGE3                   105
    #define IDD_PROPPAGE4                   106
    #define IDD_PROPPAGE5                   107
    #define IDR_POPUP_VIVI_VIEW             108
    .....

 この中の "ID" ではじまる文字列を以下のように全部抜き出して、 別のファイル(たとえばプログラムのドキュメント)にもって行きたいとしましょう。

    ID_REPLACE
    ID_REPLACEALL
    IDD_ABOUTBOX
    IDS_PROPSHT_CAPTION
    IDD_PROPPAGE1
    IDD_PROPPAGE2
    IDD_PROPPAGE3
    IDD_PROPPAGE4
    IDD_PROPPAGE5
    IDR_POPUP_VIVI_VIEW
    .....

 それぞれの文字列をひとつずつクリップボードにコピーし、別のファイルにペーストするのは結構面倒です。 追加コピーを使えばすこし楽になるでしょうが、やはり大変です。 UNIXのエキスパートならば ed や正規表現の置換を使うかもしれません。でも、結構大変です。
 BOX選択を使えば、このような作業は楽にこなせます。選択モードをBOX選択にし (「ツール」-「BOX選択」、または F5 または ツールバー)、コピーしたい部分をマウスまたは カーソルキーで選択します。BOX選択モードでは、その名の通り、矩形領域で文字列を選択できるので、 矩形領域に入っている文字列を削除、カット&ペーストできます。この例では、"ID" のところを左上点とし、 マウスならば左ボタンを押したまま、ぐぐっと右下の方に持っていき、 コピーすべき部分が全部反転されたところで、コピーを行います(「編集」-「コピー」 または [Ctrl]+C)。 そして、別のファイルに行ってペーストを行います。ね、簡単で便利でしょ?

■ 選択境界が全角文字の上にある場合

 BOX選択では直線の矩形で文章を選択する訳ですが、日本語の全角文字は半角文字の倍の幅を持ってるので、 全角文字の位置が上下で揃わないことがあります。

    たとえばこんな場合、
    X上下で文字が揃わない。

 BOX選択の反転表示は全角文字かどうかを考慮しないので、場合によっては全角文字の半分だけが反転される場合が あります。このような状態で削除、カット、コピーを行った場合、境界線は反転にかかっている文字の左にあると解釈されます。
 例えば、

       ┌────┐
       │    │
    上下で文字が揃わない。
       │    │
       └────┘

このような選択状態では、選択境界左側の "文" の部分は境界線画文字の左側にあると解釈されるので、 削除等の対象になりますが、右側の "な" は削除等の対象とはなりません。したがって、 削除を行うと以下のような状態になります。

    上下でない。