VImの次のアンダースコアまで変更するにはどうすればよいですか?


60

vimにこのテキストがあり、カーソルが最初の文字にある場合:

www.foo.com

私ができることを知っています:

  • cwa word(小文字のw)が句読点または空白で終わるため、最初のピリオドまで変更する
  • cWa Word(大文字w)が空白のみで終わるため、アドレス全体を変更する

今、私がこれを持っている場合:

stupid_method_name

これに変更したいですか?

awesome_method_name

両方cwcW全体を変更しますが、アンダースコアの前にフラグメントを変更したいだけです。

私のフォールバック手法はc/_、「検索で次のアンダースコアに到達するまで変更する」ことを意味しますが、私にとっては、すべてのアンダースコアが検索用語として強調表示されるため、少し面倒です。

アンダースコアを含まない、wまたはWアンダースコアを含まない指定子はありますか?


何が問題なの:nohlですか?
イグナシオバスケス-エイブラムス

私はない検索用語は、ほとんどの時間を強調することにしたいです。検索をムーブメントとして使用するときだけではありません。(私もこの質問をした:superuser.com/questions/244042/…
ネイサンロング

回答:


82

できますcf_。fは検索された文字を強調表示しません。

ct__を含めたくない場合にもできます。


15
あなたはf、t、F、Tを混乱させfています。キャラクターに向かって前進します。Fキャラクターに戻ります。tキャラクターの直前に進みます。そしてT、ターゲットキャラクターの右側のキャラクターに戻ります。したがって、2番目の例はであるはずct_です。
ゲイリージョン

2
これで私の答えは修正されました。ごめんなさい、ありがとう。
ダブルフェイス

4
ct_まさに私が欲しかったものです。これは現在、私の通常のワークフローの一部になっています。ありがとう!
ネイサンロング

1
これは信じられないほど拡張可能であり、したがって強力です。私はあなたがfまたはtの後に任意の文字を置くことができ、それが次の(または大文字の場合は前の)オカレンスに行くと推測しています。ありがとう。
ドム

2
Vimが失敗することは決してありません。
ベンジャミンR

64

これを.vimrcに入れてください:

set iskeyword-=_

_は単語の境界として扱われ(単語の境界ではありません)、cwを使用して "awesome"を変更し、cWを使用して全体を変更できます。

見る:

:help iskeyword

そして

:help word

詳細については。


6
私は自分の単語の境界を定義できることを知っているのは素晴らしいことですが、考えた後、最善の解決策はct_簡潔であり、デフォルトのVimの動作であるため、以下に示すようにダブルフェイスであると思います。
ネイサンロング

これは私の個人的なお気に入りです
ジェイ

2
これは気に入っていますが、PHPの構文の色分けが壊れています。
アーロンサレーン

これを設定解除または切り替えるにはどうすればよいですか?
Behe

1

camelcasemotionは非常に便利なvimプラグインで、アンダースコアまたはキャメルケース表記を使用するときに単語を移動できます。このプラグインを使用すると、多くの従来のvim motionコマンドの前にコンマを配置できます。これにより、アンダースコアまたはキャメルケース表記の単語を完全な単語として扱うことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.