読者です 読者をやめる 読者になる 読者になる

Vim でさまざまなカッコの中を統一的に選択する

突然ですがこれだけは共有したかった Vim の設定を紹介。ドチャクソ便利です。

NeoBundle を使っているかたが下の設定をすると、様々なカッコ(全角・半角問わず)の中を ib というテキストオブジェクトで扱うことができるようになります。たとえば中身を選択したいときは vib, 削除したいときは dib です。同様に、カッコまで含めたテキストオブジェクトは ab になります。

私は特に Vim で日本語も書くので、この設定がたいへん便利。頭が悪いので多くのキーバインドを覚えることはできませんが、とりあえず braces が出てきたら b、と覚えておけばいいだけなので重宝しております。

NeoBundle 'kana/vim-textobj-user'
NeoBundle 'kana/vim-textobj-jabraces'   " aj), aj}, aj], aj>, ajA, ajY, ...
NeoBundle 'osyo-manga/vim-textobj-multiblock'  " nobind
NeoBundle 'osyo-manga/vim-textobj-multitextobj'  " ab, ib to all braces.

let g:textobj_multitextobj_textobjects_i = [
    \ "\<Plug>(textobj-multiblock-i)",
    \ "\<Plug>(textobj-jabraces-parens-i)",
    \ "\<Plug>(textobj-jabraces-braces-i)",
    \ "\<Plug>(textobj-jabraces-brackets-i)",
    \ "\<Plug>(textobj-jabraces-angles-i)",
    \ "\<Plug>(textobj-jabraces-double-angles-i)",
    \ "\<Plug>(textobj-jabraces-kakko-i)",
    \ "\<Plug>(textobj-jabraces-double-kakko-i)",
    \ "\<Plug>(textobj-jabraces-yama-kakko-i)",
    \ "\<Plug>(textobj-jabraces-double-yama-kakko-i)",
    \ "\<Plug>(textobj-jabraces-kikkou-kakko-i)",
    \ "\<Plug>(textobj-jabraces-sumi-kakko-i)",
\]
let g:textobj_multitextobj_textobjects_a = [
    \ "\<Plug>(textobj-multiblock-a)",
    \ "\<Plug>(textobj-jabraces-parens-a)",
    \ "\<Plug>(textobj-jabraces-braces-a)",
    \ "\<Plug>(textobj-jabraces-brackets-a)",
    \ "\<Plug>(textobj-jabraces-angles-a)",
    \ "\<Plug>(textobj-jabraces-double-angles-a)",
    \ "\<Plug>(textobj-jabraces-kakko-a)",
    \ "\<Plug>(textobj-jabraces-double-kakko-a)",
    \ "\<Plug>(textobj-jabraces-yama-kakko-a)",
    \ "\<Plug>(textobj-jabraces-double-yama-kakko-a)",
    \ "\<Plug>(textobj-jabraces-kikkou-kakko-a)",
    \ "\<Plug>(textobj-jabraces-sumi-kakko-a)",
\]
omap ab <Plug>(textobj-multitextobj-a)
omap ib <Plug>(textobj-multitextobj-i)
vmap ab <Plug>(textobj-multitextobj-a)
vmap ib <Plug>(textobj-multitextobj-i)