コンテンツにスキップ

[VimT] テキストオブジェクト

まとまりを表すモノ。 想定時間: 10分

オペレータの範囲に幅を持たせる用途1で使います。モーションのように単独では使えません。

di"と押してみましょう。dは削除オペレータですが...

▼
I play tennis with "Ichiro" every day!

i"ダブルクォーテーションの内側(inner ")というまとまりを指すテキストオブジェクトです。

ai

テキストオブジェクトはほぼ必ず2aiから始まります。

  • iは内側。innerの略
  • aは外側を含む。aそのまま

私はinsidearoundの方がしっくり来ました。

da"と押して、di"との挙動が違うことを確認しましょう。

▼
I play tennis with "Ichiro" every day!

オススメテキストオブジェクト

aiは省略します。

テキストオブジェクト 意味 備考
w 単語 wordの略
W 空白で区切られたブロック wordの略
p 段落 paragraphの略
" ""の範囲 現在行の次に出現する範囲が対象
' ''の範囲 現在行の次に出現する範囲が対象
) ()の範囲 現在位置が()内であることが必要
] []の範囲 現在位置が()内であることが必要
} {}の範囲 現在位置が{}内であることが必要

よく使うオペレータ+テキストオブジェクト

実践的な操作をしてみましょう。

Change inner word ---> ciw

単語を変更するため、ciwと入力してからそのまま好きな単語を書いてみましょう。

        ▼
I like Vim the most in the world.

Change inner "..." ---> ci"

ダブルクォーテーションの中身を変更するため、ci"と入力してからそのまま好きな単語を書いてみましょう。

▼
I like "Vim" the most in the world.

Delete a "..." ---> da"

ダブルクォーテーションで囲まれた単語をダブルクォーテーションごと消すために、da"と入力してみましょう。

▼
I like "Vim" the most in the world.

ciと、daと連携することが多いです。

Delete a paragraph ---> dap

main関数を削除するため、dapと入力してみましょう。

#!/bin/env python

def main():
     
    print("hogehoge")
    pass

main()

Yank a {...} ---> ya}

{}で囲まれた部分を{}を含めてyankするため、ya}と入力してみましょう。

{
  "id": 1,
  "name": "Ichiro",
  "favorite": {
        "food": ["apple", "orange"],
        
        "animal": ["dog", "cat"],
  }
}

好きなところに移動してpを押すと貼り付けられます。


  1. オペレータのためだけに存在するわけではない 

  2. https://vim-jp.org/vimdoc-ja/motion.html#text-objects の記載には全てついている