[VimT] テキストオブジェクト¶
まとまりを表すモノ。 想定時間: 10分
オペレータの範囲に幅を持たせる用途1で使います。モーションのように単独では使えません。
di"と押してみましょう。dは削除オペレータですが...
▼
I play tennis with "Ichiro" every day!
i"はダブルクォーテーションの内側(inner ")というまとまりを指すテキストオブジェクトです。
aとi¶
テキストオブジェクトはほぼ必ず2aかiから始まります。
iは内側。innerの略aは外側を含む。aそのまま
私はinsideとaroundの方がしっくり来ました。
da"と押して、di"との挙動が違うことを確認しましょう。
▼
I play tennis with "Ichiro" every day!
オススメテキストオブジェクト¶
aとiは省略します。
| テキストオブジェクト | 意味 | 備考 |
|---|---|---|
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.
cはiと、dはaと連携することが多いです。
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を押すと貼り付けられます。
-
オペレータのためだけに存在するわけではない ↩
-
https://vim-jp.org/vimdoc-ja/motion.html#text-objects の記載には全てついている ↩