|
で囲まれたブロックの仮引数を変更したいときに、ci|
で変更できるよう、vim-textobj-userの設定をした。
.vimrc
" vim-textobj-usercall 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-betweenletg: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>