Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
140
Help us understand the problem. What is going on with this article?
@kasei-san

Vimのテキストオブジェクトについてまとめた

More than 5 years have passed since last update.

テキストオブジェクトって何?

Vim7位から追加された概念
あるルールに基づいたテキストのまとまり

何が良いの?

オペレータと組み合わせて、テキストオブジェクト単位での編集ができる

オペレータ?

テキストを削除したり、編集したりするコマンド

主なオペレータ

キー オペレーション
c 変更
d 削除
y yank
~ 大文字/小文字入れ替え
gu/gU 全て小文字/大文字

テキストオブジェクトと組み合わせるのってどうするの?

オペレータコマンド + (回数指定) + 内部/外部指定 + テキストオブジェクトの種類の指定

よくわかんないので具体的に

こんなテキストがある時(|は、カーソル位置)

kp3k3 "te|st" 2jo2jp

vi" を押下すると、以下のように、ビジュアルモードで選択される(~~~~ は選択範囲)

kp3k3 "te|st" 2jo2jp
       ~~~~~

vi" で、 カーソル上の " で囲まれている文字列の内部を、ビジュアルモードで選択 という意味になる

それぞれのコマンドの意味

v : ビジュアルモードで選択
i : inner
" : "で囲まれている文字列

内部/外部指定

a : テキストオブジェクト全体を指定(a)
i : テキストオブジェクト内部を指定(inner)

vi"
kp3k3 "te|st" 2jo2jp
       ~~~~~
va"
kp3k3 "te|st" 2jo2jp
      ~~~~~~~

va" だと、" も含まれる

テキストオブジェクトの種類(よく使いそうなやつ)

キー 意味
w word . とか , とか、単語を区切りそうな文字列までの連続
set iskeyword で、区切り文字以外の文字列を確認可
W WORD 非空白文字の連続
[,(,{,<,",` 左の記号で囲まれている文字列
b block ブロック。() 等カーソル位置から直近の囲み文字の範囲(前方一致)
B block ブロック。() 等カーソル位置から直近の囲み文字の範囲(後方一致)
t htmlタグ

便利なテキストオブジェクト拡張プラグイン

surround.vim

tpope/vim-surround
囲み文字を対象にするテキストオブジェクト(s)を追加するプラグイン

ys[範囲][記号] -> 記号で範囲を囲む
cs[記号] -> 記号を置換
ds[記号] -> 記号を削除
S[記号] -> 選択範囲を記号で囲む

ysiw" -> カーソル上の単語を " で囲む

vim-textobj-ruby

rhysd/vim-textobj-ruby
ruby のブロックを対象にするテキストオブジェクト(r)を追加するプラグイン

dir : if 〜 end の中身を削除

参考

140
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kasei-san
小林の中の人 長文はblogに。QiitaにはちょっとしたTIPSを
lclco
業界最大手高速バス料金比較サイト「バス比較なび」やLCCなど飛行機との比較ができる「格安移動」を運営

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
140
Help us understand the problem. What is going on with this article?