Surround.vimは気の利いた vim 拡張機能で、テキストのブロックを 、角かっこ、中かっこ、およびほとんど任意の「囲み」文字で囲むことができます。段落と単語のサラウンドをサポートしていますが、ビジュアル モードでよく使用します。私はEmacsで遊んでいて、似たようなものがあるかどうか疑問に思っています。領域を強調表示してから、マークされた領域 (または四角形) を中かっこ、大かっこ、またはタグで囲むことができるもの。
7 に答える
Maybe wrap-region is what you need.
smartparens is another excellent option if need to wrap something with delimiters, tags, etc.
私は悪サラウンドを使用します。これは vim の動作をエミュレートしますが、残念ながら、 Evil vim モードが必要なため、ほとんどの emacs ユーザーが望むものではない可能性があります。ただし、最初に Surround.vim を参照したため、適切である場合とそうでない場合があります。
Evil-surround は、周囲の変更を含む、Surround.vim のほとんどの機能をサポートしているようです。
タグには何も組み込まれていないと思いますが、括弧についてはM-(. ブラケット/ブレース/引用符については、次のことができます。
(global-set-key (kbd "M-[") 'insert-pair)
(global-set-key (kbd "M-{") 'insert-pair)
(global-set-key (kbd "M-\"") 'insert-pair)
強調表示された領域がない場合は、そのペアが挿入され、その間にカーソルが置かれることに注意してください。一致するものを削除するのにも便利です
(global-set-key (kbd "M-)") 'delete-pair)
タグのペアを挿入する場合は、簡単な elisp を使用します。
(defun my-insert-tags (tag)
(interactive "sTag: ")
(if (region-active-p)
(let ((beg (region-beginning)))
(save-excursion
(goto-char (region-end))
(insert "</" tag ">")
(goto-char beg)
(insert "<" tag ">")))
(insert "<" tag ">")
(save-excursion
(insert "</" tag ">"))))
はい、1 週間前の時点で、sround.vim のクローンがあります: http://github.com/timcharper/vimpulse-surround.el
vim を必要とする vimpulse が必要です。これは、sround.vim の機能の多くを実装しています。
モジュールを使用しても、Emacsでそれを行う方法を知りません。
私の Elisp は少し錆びています。現在の領域 (マークされたテキスト) または単語を引用符 (") で囲む単純な関数を次に示します。
(defun 挿入引用符 () "現在のリージョンまたは作業を引用符 (\") で囲みます。" (相互の作用) (let (開始終了境界) (if (および一時的なマーク モード マーク アクティブ) (setq start (領域開始) end (リージョンエンド)) (プログ (setq bounds (ポイントでの境界の「シンボル)」) (setq start (車の境界) 終了 (cdr 境界)))) (後藤文字開始) (入れる "\"") (goto-char (+ end 1)) (入れる "\"")))
リージョンなどを選択して、さまざまなモードがコメントに対して行うように、その周りにボックスを作成しますか? emacs-wiki ( http://www.emacswiki.org/ ) には、それを行う ascii-line アート (および figlet ツールも) があると思います。ボックス、かなり、線画を探しています...
############################
# #
# I AM REGION, WE ARE MANY #
# #
############################