vim-users.jp

Hack #105: surroundをより便利に使う

Posted at 2009/11/29
このエントリーをはてなブックマークに追加

問題

Tim Pope作のsurroundは 便利なのですが、実は以下のような問題点を抱えています:

ユーザー独自の replacements が定義できるものの、 それを利用できるのはysなどの「追加」操作のみで、 csdsなどの targets には利用できません。 例えば以下の設定を行なった場合、

let g:surround_{char2nr('j')} = "「\r」"

ysiwjなどとして「」を追加することはできるのですが、 dsjで「」を削除したり、 csjbで「」を別のものに置き換えることはできません。

また、ユーザー定義のreplacementsには2キー以上のストロークを割り当てることができません。 上記では設定例として「」を挙げましたが、 合わせて『』や【】なども定義しておくと便利です。

ところがユーザー定義のreplacementsには 1キーのストロークしか割り当てることができません。 このような設定を追加しようとすると割り当てられるキーはすぐになくなりますし、 割り当てられたとしても覚え易く使い易いキーばかりとは限りません。

surroundを使えば使うほど上記の2点が不便に感じられてきます。 どうにかして解決できないでしょうか。

解決方法

kana版surround を使います。

例えばキーストロークについては以下のようにして 2キー以上のものを割り当てることができます (実装の都合でオリジナルとは設定方法が異なります):

call SurroundRegister('g', 'jk', "「\r」")
call SurroundRegister('g', 'jK', "『\r』")
call SurroundRegister('g', 'js', "【\r】")

また、ユーザー定義のreplacementsもtargetsとして扱えます。 例えば上記の設定をしておいた場合、 以下のように標準のものと同様に各種操作を行なうことができます:

ujihisa
    ↓         ysjk
「ujihisa」
    ↓         csjkjK
『ujihisa』
    ↓         csjKjs
【ujihisa】
    ↓         dsjs
ujihisa

参考資料

kana

もどる
blog comments powered by Disqus