溝畑です。
みなさんVim使ってますか?
自分は2018年末から最近までVSCodeに少し浮気していたのですが・・・。
最近またVimに戻ってきました。
社内のエディタ&IDE勢力はざっくり、VSCode > IntelliJ > Vim, Emacs > その他といった具合。
ばらつきはあるものの、VSCode勢が多く、IntelliJがその後を追うような感じです。
(とくにこれを使え!という決まりはないので、自由に使いたいの使えます)
そんな中、なぜVimから離れられないのかを考えたところ、やはり「テキストオブジェクト」が原因なのかなと。。。
ということで、目新しいものでもないですが、
今回はテキストオブジェクトと、切っても切れないオペレータ&モーションの紹介です。
大分前に社内でLTしたときに話した内容ですが...。
オペレータ→モーション→テキストオブジェクトの順番でいきます。
オペレータ
まずはオペレータです。みなさん、初めてVimを触ったとき、「削除はddだよ」「コピーはyyだよ」とか教えてもらいましたよね?
このdとかyがオペレータです。
dやyも含めて、他にもいろいろとあります。

vをここに含めてますが、厳密にはビジュアルモードです。(だから特別)
モーション
次にモーション。これも初めてVimを触ったとき、「移動はhjklだよ」とか、「Gで一番下!」「ggで一番上!」とか教えてもらいませんでしたか?
この手の移動とかがモーションです。
これ以外にもいろいろあります。

テキストオブジェクト
最後にテキストオブジェクト。例えば、括弧の中、タグの中、'の中"の中などなど、何かしらのルールを持ったテキストのまとまりです。
例えば、

組み合わせる
なんとこの子たち、組み合わせて使えます!こんなときありませんか?
・括弧の中だけ消したい、ヤンクしたい、変更したい、選択したい
・タグの中を消したい、ヤンクしたい、変更したい、選択したい
・"の中を消したい、ヤンクしたい、変更したい、選択したい
組み合わせると、さくっとできちゃうんです。
例として一番上の括弧を順に見ていきましょう。
・括弧の中だけを消したい場合
di(
・括弧の中だけヤンクしたい
yi(
・括弧の中だけ変更したい
ci(
・括弧の中だけ選択したい
vi(
それぞれ、オペレーターとテキストオブジェクトの組み合わせです。
モーションとの組み合わせは、例えばdGなんかすると、「今いるとこから下を全部消す」になります。
よーく見てもらうと、一番前のオペレーターを変えているだけで、後ろ全部i(ですね。
間のiをaにしたり、組み合わせを変えればよいだけなので、少し覚えると、使えるコマンドがかなり増えるのも特徴です。

Vimちょっととっつきにくいなと思ってた人も、この辺りを一度経験してみると、多分Vimやめられなくなります。
それでは、良いVimライフを。