- 2009-11-29 (日) 0:00
- Vim Hacks
問題
Tim Pope作のsurroundは 便利なのですが、実は以下のような問題点を抱えています:
ユーザー独自の
replacements
が定義できるものの、
それを利用できるのはysなどの「追加」操作のみで、
csやdsなどの
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
Comments:2
- eholic 11-06-07 (火) 22:14
-
kanaさん版surround.vimで シングル/ダブルクォーテーションでの設定が上手くいかないので, 分かる方いましたら教えてください.
設定は下記のように「s」をシングル,「d」をダブルクォーテーションに割り当てました. call SurroundRegister(‘g’, ‘s’, “‘\r’”) call SurroundRegister(‘g’, ‘d’, “\”\r\”")
何が問題かと言いますと,この設定で [hello] → “hello”は「csrd」で出来るのですが,逆に “hello” →[hello]を「csdr」をすると []hello” になってしまいます. 「cs”r」をタイプすれば出来るのですが,怠け者なので・・・. 同様に,シングルクォーテーションでも同じ問題が生じます.
vim script初心者なのでpluginファイル読んでも,よく分かりません. 解決策をお持ちの方がいましたら,教えて下さい. よろしくお願いします.
- eholic 11-06-07 (火) 22:20
-
改行が反映されなかった・・・.ということで2重投稿します.すみません.
kanaさん版surround.vimでシングル/ダブルクォーテーションでの設定が上手くいかないので, 分かる方いましたら教えてください.
設定は下記のように「s」をシングル,「d」をダブルクォーテーションに割り当てました.
call SurroundRegister(‘g’, ‘s’, “‘\r’”)
call SurroundRegister(‘g’, ‘d’, “\”\r\””)
何が問題かと言いますと,この設定で
[hello] → “hello”は「csrd」で出来るのですが,
逆に “hello” →[hello]を「csdr」をすると []hello” になってしまいます.
「cs”r」をタイプすれば出来るのですが,怠け者なので・・・.
同様に,シングルクォーテーションでも同じ問題が生じます.
vim script初心者なのでpluginファイル読んでも,よく分かりません. 解決策をお持ちの方がいましたら,教えて下さい. よろしくお願いします.
Trackbacks:0
- Trackback URL for this entry
- http://vim-users.jp/2009/11/hack105/trackback/
- Listed below are links to weblogs that reference
- Hack #105: surroundをより便利に使う from Vim-users.jp

