Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

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

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

何が良いの?

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

オペレータ?

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

主なオペレータ

キーオペレーション
c変更
d削除
yyank
~大文字/小文字入れ替え
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" だと、" も含まれる

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

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

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

surround.vim

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

ds" : 囲んでいる" を削除
cs"' : 囲んでいる" を ' に置換
ysw' : 選択範囲を " で囲む

vim-textobj-ruby

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

dir : if 〜 end の中身を削除

参考


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>