ようやく風邪が治りました。nagata(@handlename)です。
みなさん、矩形選択モードというものをご存知でしょうか? 矩形というのは長方形のことです。 矩形選択というのはつまり、領域を四角形に選択することを指します。
通常選択
矩形選択
通常テキストエディタは行毎に処理を行いますが、 矩形選択を活用すると行をまたいだ操作を行うことができます。
今回はemacsの矩形選択モードを3種類ほど紹介してみたいと思います。
標準の矩形選択
emacsに最初から用意されている関数です。 それぞれの関数にはそれぞれキーバインドが設定されています。
コマンド | 呼ばれる関数 | 動作 |
---|---|---|
C-x r c | clear-rectangle | 矩形領域を空白文字に置き換える |
C-x r d | delete-rectangle | 矩形領域を削除する |
C-x r o | open-rectangle | 空白文字で埋まった矩形領域を挿入する |
C-x r t | string-rectangle | 矩形領域を文字列で置き換える |
C-x r k | kill-rectangle | 矩形領域を削除してキルリングに追加 |
C-x r y | yank-rectangle | キルリングの矩形領域を貼り付ける |
C-x r r | copy-rectangle-to-register | レジスターに矩形領域を登録する |
C-x r i | insert-register | レジスターに登録された矩形領域を貼り付ける |
なにも設定する必要なく使うことができるのでお手軽ですが、 どの部分が選択されるかが若干わかりにくく、 通常のリージョン操作方法と異なるので覚えにくいという欠点があります。
sense-region
従来のリージョン選択と同じ操作方法なので、自然に使えます。
;; (install-elisp "http://taiyaki.org/elisp/sense-region/src/sense-region.el") (require 'sense-region) (sense-region-on)
リージョン選択中に、もう一度 C-<space> すると矩形選択モードに、 その状態で C-w なり M-w なりすれば矩形領域をコピー&切り取りができます。
貼り付けるときには、
- すでにある文字列を押しのけて挿入するか
- 単純に挿入するか
を選択できます。たとえば、このような状態で矩形貼り付けを行った場合、
すでにある文字列を押しのけて挿入する場合はこんな感じに。
そのまま挿入する場合はこんな感じになります。
通常のリージョン操作と違和感なく使えるのでおすすめです。
cua-mode
矩形領域の前後にリアルタイムで文字列の挿入ができたり、 連番で置き換えたりできます。
(cua-mode t) (setq cua-enable-cua-keys nil) ; そのままだと C-x が切り取りになってしまったりするので無効化
リージョン選択中に C-<enter> で矩形選択モードになります。 sense-regionと同様に C-w や M-w が使えます。 また、矩形選択中に次のコマンドを打つと、矩形領域に対して操作を行うことができます。
コマンド | 動作 |
---|---|
適当なキー | 矩形領域の前(または後ろ)にそのまま挿入。 <enter> で挿入位置を変えられる |
M-p | 矩形の幅を固定 |
M-b | 空白文字で埋める。 open-rectangle と同等 |
M-s | 文字列で置き換える。 string-rectangle と同等 |
M-f | 1種類の文字で埋める。 string-rectangle で1文字指定したときと同等 |
M-i | 矩形領域内の数字をインクリメントする |
M-n | 矩形領域を連番で埋める。フォーマット指定可 |
参考: Emacs Column Editing on Vimeo
連番挿入が便利なので、いつもはこれを使ってます。
おわり
うまく使うと作業効率アップに絶大な効果がある矩形選択、是非お試しあれ〜。