Home > Vim Hacks > Hack #105: surroundをより便利に使う

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

問題

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
このエントリーをはてなブックマークに追加
はてなブックマーク - Hack #105: surroundをより便利に使う
Share on Facebook
Post to Google Buzz
Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

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ファイル読んでも,よく分かりません. 解決策をお持ちの方がいましたら,教えて下さい. よろしくお願いします.

Comment Form
Remember personal info

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

Home > Vim Hacks > Hack #105: surroundをより便利に使う

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top