2010-12-28 6 views
13

vimを使って、単語全体を変更するのに、cwが非常に便利です。 Vimの動作コマンドと動作動詞の分離は、非常に強力な組み合わせになります。私はちょうどDefaultHandlerContentHandlerに変更しなければなりませんでした。私は自然にそれを「次の大文字に変える」と考えましたが、大文字から次の大文字に移動する動作コマンドは見つかりませんでした。vimのCamelCase単語の一部を変更する

この場合、ctHを使用できましたが、次の大文字に関係なく、CamelCase語の最初の部分を変更(または削除など)する方法がありますか?

+0

の可能重複によって、それを交換するチャンスを得るために取得するには、[移動コマンドは、アンダースコアやキャメルケースが含まれますように、私はVimを設定することができますどのようにしかし、完了はそれらを無視する?](http://stackoverflow.com/questions/1279462/how-can-i-configure-vim-so-that-movement-commands-will-include-underscores-and-c)(私がコメントでなければならないと思うLucの答えに記載されているように) – yshavit

答えて

2

VimはデフォルトでCamelCaseの単語テキストオブジェクトを提供しないため、 自分で作成する必要があります。新しい優れたプラグインがすでに存在するため、我々は、ホイール を改革する必要はありませんし、我々はベースとしてそれを使用することができるということです。camelCaseMotion

このスクリプトは、wに似た動き,w,b,e(、bを定義します)は、単語単位では移動しませんが(前方/後方)、Camel-wiseです。単語境界および大文字に変換する。問題は、 は、単語全体を選択するためにiwに似たテキストオブジェクトを定義しないということです。したがって、 を作成してみましょう。

テキストオブジェクトには、ビジュアルモードとオペレータ保留モードの2つの定義が必要です。ここに私たちの定義は( .vimrcに追加する)です:

vmap ,i <Esc>l,bv,e 
omap ,i :normal v,i<CR> 

あなたは私たちがプラグインによって定義された,b,e動きを利用して見ることができるように。

最初の定義では、ビジュアルモードのときに,iと入力することができ、 は現在の "inner camelCase word"を選択します。 l動きが常にカーソルが上にある単語を取得するための回避策です。カーソルが単語の最初の文字の上にあるときにそうでなければ、我々は以前のものを得る)

2番目の定義は、最初に 1を使用しています私たちは、プラグインをインストールして、我々はあなたが望んで行うことができます私たちの.vimrc に定義を追加した後,i

dまたはc作品のようなオペレータにしましょう。例えば、私はこの例を取る場合:私のカーソルが文字の上にある場合は

DefaultHandlerWord 

Handlernは、私が使用することができます。

  • ,eが行きHandler
  • ,bの最後の文字に移動するにはHandler
  • ,w最初の文字はWord
  • の最初の文字になります。
  • d,iHandlerを削除し、のみDefaultWord
  • c,iHanlderを削除し、別の単語
+0

また、Vimについての質問は、[専用スタック交換サイト](http://vi.stackexchange.com/)に興味があるかもしれません。 – statox

関連する問題