surround.vimのEmacsバージョン作りました

surround.vimemacsバージョンみたいな感じです. emacsバージョンを探したんですがなかったので悔しくて作りました.

リポジトリ

ganmacs/emacs-surround · GitHub

設定

1.どうにかして入れます

caskの場合はCaskファイルに以下を追加

(depends-on "emacs-surround" :git "https://github.com/ganmacs/emacs-surround.git")

cloneしてくるのは

$ git clone https://github.com/ganmacs/emacs-surround.git

こんなかんじでロードパスが通ってるところにおいてください.

2.設定ファイル

init.elに以下を追加.

(require 'emacs-surround)
(global-set-key (kbd "C-q") 'emacs-surround)

使い方

変更

囲まれた文字列を変更したいときC-q '"と打つと

'He|llo World'

ダブルクォートをシングルクォートに変更します.

"Hello World"

削除

囲まれた文字列を削除したい場合はC-q d "と打ちます

"He|llo World"

そうすると以下のようになります

Hello World

挿入

文字列を囲みたいときはC-q i (C-q ( <return>とうつと

He|llo World

文字列で囲みます

(Hello) World

または,込みたい範囲をリージョンで囲むと以下のように囲むこともできます

(Hello World)

カスタマイズ

emacs-surround-alistに囲むペアのリストを渡すと任意の文字列で囲むことができます.

例えば以下のコードをinit.elに書くと{で囲むときにスペースを入れることができます.

(add-to-list 'emacs-surround-alist '("b" . ("{ " . " }")))

つまり,以下のrubyのブロック内にいる状態でC-q {bとすると

[1, 2, 3].each {p |1+i}

前後にスペースが入った{になります.

[1, 2, 3].each { p 1+i }

終わりに

問題があれば教えてください

参考

vim-surround

Vim のプラグイン紹介 〜 surround.vim でカッコつける 〜