vimの便利なPlugin(その24)vim-expand-region

 

今回は、vimのビジュアルモードの選択範囲に関するプラグインの紹介です。 vimでコピー、削除等の編集対象を選ぶには、ノーマルモードで yi”di”yi)di) のようにしているかと思います。また、ビジュアルモードで単語や括弧内の文字列を選択するには、 viwvi) とキー入力します。 これはこれで便利なのですが、コピーしたい文字列が括弧内にあるからとか、ダブるクオートに囲まれているからということを、一度考えてからコマンドを実行しないといけません。 怠け者の私は、もっと楽にできないかと探していて見つけたのがこのプラグインです。

では、一応試してみた環境から。

  • CentOS6.8 x86_64
  • vim-7.4

Install

今回もdein.vimを前提とさせていただきます。 まだ、dein.vimを使っていない方は(その5)から。

call dein#add(‘terryma/vim-expand-region’)

これで「:call dein#install()」をコマンドラインモードで実行すれば、インストールは終了。

使い方

特に設定をする必要はなく、 + で選択範囲を広げていけます。 また選択された範囲を狭めるには、_ を入力します。 カーソルを選択したいエリアにもっていき v キーを叩くとビジュアルモードにします。 その状態で +_ キーを入力してみて下さい。 選択範囲がword、括弧内、クオート内のように広がっていきます。 次の動画は、54行目にある ”width” へカーソルを持っていき、v でビジュアルモードにしています。 そこで + キーを入力すると”width” が選択され、更に v キーを入力すると “width,“、” width, (fd_set *)&mask, NULL, NULL, &timeout” 、その1行全体へと選択範囲が広がっていきます。 その状態から _ を入力すると逆に選択範囲が狭まっていきます。

 

デフォルトのキーマッピングを変更する場合は、.vimrc にmap設定を入れます。  例えば、私は次のようにして v キーを連打していくだけで選択範囲を広げていけるようにしています。 これで括弧内やクオートを区別すること無く v キー入力だけで選択できます。 vim生活が楽になるのではないでしょうか?

vmap v <Plug>(expand_region_expand)
vmap <C-v> <Plug>(expand_region_shrink)

また、選択範囲を決定するためのテキストオブジェクトを自分で決めることができます。 次の設定が初期値ですが、変更してみて動作を確認してみて下さい。

let g:expand_region_text_objects = {
\ 'iw' :0,
\ 'iW' :0,
\ 'i"' :0,
\ 'i''' :0,
\ 'i]' :1, " Support nesting of square brackets
\ 'ib' :1, " Support nesting of parentheses
\ 'iB' :1, " Support nesting of braces
\ 'il' :0, " 'inside line'. https://github.com/kana/vim-textobj-line
\ 'ip' :0,
\ 'ie' :0, " 'entire file'. https://github.com/kana/vim-textobj-entire
\ }
  • このエントリーをはてなブックマークに追加
  • Pocket

この記事へのコメントはこちら