LoginSignup
2
2

More than 5 years have passed since last update.

ブロックの仮引数をテキストオブジェクトとして扱う

Last updated at Posted at 2014-07-22

|で囲まれたブロックの仮引数を変更したいときに、ci|で変更できるよう、vim-textobj-userの設定をした。

.vimrc
" vim-textobj-user
call textobj#user#plugin('charpairs', {})
call textobj#user#plugin('charpairs', {
\   'bar_a': {
\     'pattern': '|[^|]*|',
\     'select': 'a<Bar>'
\   },
\   'bar_i': {
\     'pattern': '|\zs[^|]*\ze|',
\     'select': 'i<Bar>'
\   }
\ })

1度、空の辞書を渡しているのは、キーの名前(bar_aなど)を変更したときに、
古いキー名を参照してしまい、エラーになるのを回避するため。

あと、virtical_bar_aのように、_a_iの箇所以外にアンダースコアがある名前は使えなかった。

参考サイト:
'pattern': [a, b] does not work when a and b are equal #15

 
追記:
vim-textobj-betweenでもキーマップを変更すれば、ci|でブロックの仮引数をテキストオブジェクトとして扱えるが、
上述のvim-textobj-userと違い、カーソルが|で囲まれた内側にいる場合のみ有効。

.vimrc
" vim-textobj-between
let g:textobj_between_no_default_key_mappings = 1
vmap i<Bar> <Plug>(textobj-between-i)<Bar>
omap i<Bar> <Plug>(textobj-between-i)<Bar>
vmap a<Bar> <Plug>(textobj-between-a)<Bar>
omap a<Bar> <Plug>(textobj-between-a)<Bar>
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2