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

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

$
0
0

|で囲まれたブロックの仮引数を変更したいときに、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>

Viewing all articles
Browse latest Browse all 5608

Trending Articles



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