パーソナルツール

camelcasemotion : キャメルケース、アンダースコア区切りの語を操作するプラグイン

作者: 小見 拓 最終変更 2012年01月10日 01時58分
— カテゴリ:

camelcasemotion.vimプラグインは、プログラムの変数名などで多く使用される、 キャメルケース、アンダースコア区切りの命名規則の語を扱うための機能をVimエディタに追加するプラグインです。 (Windows, Mac)

概要

camelcasemotion : Mappings for motion through CamelCaseWords and underscore_notation.
http://www.vim.org/script.php?script_id=1905

camelcasemotion.vimプラグインは、プログラムの変数名などで多く使用される、 キャメルケース、アンダースコア区切りの命名規則の語を扱うための機能をVimエディタに追加するプラグインです。

キャメルケースの語の例 アンダースコア区切りの語の例1 アンダースコア区切りの語の例2
HogeFooVar HOGE_FOO_VAR hoge_foo_var

このプラグインを利用すると、例えば、

HogeFooVar
HOGE_FOO_VAR

といった語がある場合に、

HogeFooVar
  ↓
HogeFooVar
  ↓
HogeFooVar

HOGE_FOO_VAR
  ↓
HOGE_FOO_VAR
  ↓
HOGE_FOO_VAR

のようにカーソル移動したり、テキスト編集を行えます。

camelcasemotion.vimプラグインは、この他に、キャメルケース、アンダースコア区切りの語を操作するテキストオブジェクトの機能をもっており、 語の一部範囲のみを対象とした、コピー、カット、ビジュアルモード選択などのテキスト編集作業を行えます。

" 例えば、下の範囲のテキストを編集操作できる。
HogeFooVar
HOGE_FOO_VAR

インストール方法

camelcasemotion.vimプラグインをインストールするには、 プラグインファイル をVim公式サイトよりダウンロードし、
そのファイルをpluginディレクトリにコピーしてください。

ファイル URL
camelcasemotion.vim http://www.vim.org/scripts/script.php?script_id=1905

使い方

camelcasemotion.vimプラグインをインストールすると追加される「,w」「,b」「,e」、 この3つの命令を使用して、テキスト操作を行います。
「,w」「,b」「,e」は、それぞれ、Vimエディタ標準のモーション「w」「b」「e」に近い挙動になっています。

カーソル移動

ノーマルモード、ビジュアルモードで「,w」「,e」「,b」と入力すると、 入力したキーに対応した位置にカーソルが移動します。
例として、次のような文があるとして、

@PropertyResource public String hoge_foo_var ;

「,w」を押下した場合、

@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;

「,b」を押下した場合、

@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;

「,e」を押下した場合、

@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;
@PropertyResource public String hoge_foo_var ;

と、上の図が示すように、語の区切り位置を解析して、カーソルが移動していきます。

このcamelcasemotion.vimプラグインのモーション機能は、Vimエディタの回数指定の繰り返し機能を利用して、 「6,w」のように実行することもできます。

6,w
@PropertyResource public String hoge_foo_var ;
  ↓ 6単位分 移動
@PropertyResource public String hoge_foo_var ;

テキスト編集

camelcasemotion.vimプラグインで定義された「,w」「,b」「,e」コマンドを、
Vimエディタの編集機能と組み合わせることもできます。

CarieerMemberProfileDetails
 ↓ 例1。Mの位置で、「d,w」と実行。
CarieerProfileDetails

CARIEER_MEMBER_PROFILE_DETAILS
 ↓ 例2。Mの位置で「d,w」と実行。
CARIEER_PROFILE_DETAILS
CarieerMemberProfileDetails
 ↓ 例3。「d,b」と実行。
CarieerProfileDetails

CARIEER_MEMBER_PROFILE_DETAILS
 ↓ 例4。「d,b」と実行。
CARIEER_PROFILE_DETAILS
CarieerMemberProfileDetails
 ↓ 例5。「d,e」と実行。
CarieerProfileDetails

CARIEER_MEMBER_PROFILE_DETAILS
 ↓ 例6。「d,e」と実行。
CARIEER__PROFILE_DETAILS

テキスト編集でも、回数を指定しての繰り返し実行が可能です。
カーソルが単語の範囲を超える場合、「,w」「,b」「,e」は、それぞれ「w」「b」「e」のように動作します。

" 例文
CarieerMemberProfileDetails is the user data type.

" 例文に「5d,w」と実行した場合
Carieeruser data type.

" 例文に「5d,e」と実行した場合
Carieer user data type.

Note

この章の操作例では、見た目に分かりやすい、削除の「d」コマンドを使用していますが、
他の編集コマンドでも動作します。

テキストオブジェクト

キャメルケースの語、アンダースコア区切りの語の、カーソルの位置にある語の一部分を指定して、 テキストオブジェクトのような編集操作を行えます。 使用できるテキストオブジェクトは、「i,w」「i,b」「i,e」です。

例としては、mの位置にカーソルがある時に、

CarieerMemberProfileDetails
CARIEER_MEMBER_PROFILE_DETAILS

テキストオブジェクト「i,w」で、

CarieerMemberProfileDetails
CARIEER_MEMBER_PROFILE_DETAILS

テキストオブジェクト「i,b」で、

CarieerMemberProfileDetails
CARIEER_MEMBER_PROFILE_DETAILS

テキストオブジェクト「i,e」で、

CarieerMemberProfileDetails
CARIEER_MEMBER_PROFILE_DETAILS

図の中の、ハイライトされた範囲のテキストを操作できます。

camelcasemotion.vimプラグインで利用できる、テキストオブジェクトの操作をまとめたのが、次の表です。

テキストオブジェクト 削除 置換 選択
i,w di,w ci,w vi,w
i,b di,b ci,b vi,e
i,e di,e ci,e vi,b

Note

テキストオブジェクトについて良く分らない場合は、カーソルを下の位置に移動して、

CARIEER_MEMBER_PROFILE_DETAILS

ノーマルモードで、「di,w」と入力してみてください。

di,w

テキストオブジェクトは、ある範囲のテキストを、ひとかたまりの単位として扱う機能です。

マッピングの設定

モーションのマッピングの設定

camelcasemotion.vimプラグインで「,w」「,b」「,e」に割り当てられているモーションの機能を、
それ以外のマッピングで利用したい場合は、次のような設定をVimエディタの設定ファイルに追加してください。

" 設定のフォーマット
:map <silent> {マッピング} <Plug>CamelCaseMotion_w
:map <silent> {マッピング} <Plug>CamelCaseMotion_b
:map <silent> {マッピング} <Plug>CamelCaseMotion_e

例えば、下記例のように設定すれば、Altキーと矢印キーで、もしくは、オプションキーと矢印キーで、
キャメルケースと、アンダースコア区切りの単語を操作できるようになります。

" 設定例1
:map <silent> <M-Right> <Plug>CamelCaseMotion_w
:map <silent> <M-Left> <Plug>CamelCaseMotion_b

または、次のように設定して、標準の「w」「b」「e」を、 camelcasemotion.vimプラグインの機能で置き換えるのも良いでしょう。

" 設定例2
:map <silent> w <Plug>CamelCaseMotion_w
:map <silent> b <Plug>CamelCaseMotion_b
:map <silent> e <Plug>CamelCaseMotion_e
設定 説明
<Plug>CamelCaseMotion_w 「,w」に割り当てられている機能を、別のマッピングで利用する場合に指定する。
<Plug>CamelCaseMotion_e 「,e」に割り当てられている機能を、別のマッピングで利用する場合に指定する。
<Plug>CamelCaseMotion_b 「,b」に割り当てられている機能を、別のマッピングで利用する場合に指定する。

テキストオブジェクト機能のマッピングの設定

camelcasemotion.vimプラグインのテキストオブジェクト機能のマッピングを標準設定のキー以外にマッピングするには、
次のフォーマットで、設定をVimエディタの設定ファイルに追加します。

" 設定のフォーマット
:omap <silent> {マッピング} <Plug>CamelCaseMotion_iw
:vmap <silent> {マッピング} <Plug>CamelCaseMotion_iw
:omap <silent> {マッピング} <Plug>CamelCaseMotion_ib
:vmap <silent> {マッピング} <Plug>CamelCaseMotion_ib
:omap <silent> {マッピング} <Plug>CamelCaseMotion_ie
:vmap <silent> {マッピング} <Plug>CamelCaseMotion_ie

例としては、下のように設定します。

" 設定例
:omap <silent> iw <Plug>CamelCaseMotion_iw
:vmap <silent> iw <Plug>CamelCaseMotion_iw
:omap <silent> ib <Plug>CamelCaseMotion_ib
:vmap <silent> ib <Plug>CamelCaseMotion_ib
:omap <silent> ie <Plug>CamelCaseMotion_ie
:vmap <silent> ie <Plug>CamelCaseMotion_ie

このように設定すると、「HogeFooVar」という語中の「Foo」を削除するのに、それまで「Foo」の位置にカーソルを置いて、 「di,w」と入力していたのが、「diw」の入力でも「Foo」の部分を削除できるようになります。

HogeFooVar
ドキュメントアクション
コメント
blog comments powered by Disqus