Surround.vim是一个很方便的vim扩展,它可以让你用括号、方括号、花括号以及任何其他指定的字符将文本块包围起来。它支持段落和单词周围环绕,但我经常在可视模式下使用它。 我正在尝试使用Emacs,并想知道是否有类似的东西;一些让我能够突出显示区域然后将标记区域(或矩形)用大括号、方括号或标签框起来的功能。
Surround.vim是一个很方便的vim扩展,它可以让你用括号、方括号、花括号以及任何其他指定的字符将文本块包围起来。它支持段落和单词周围环绕,但我经常在可视模式下使用它。 我正在尝试使用Emacs,并想知道是否有类似的东西;一些让我能够突出显示区域然后将标记区域(或矩形)用大括号、方括号或标签框起来的功能。
也许您需要的是 wrap-region。
smartparens 是另一个很好的选择,如果需要用分隔符、标签等来包装某些内容。
我认为没有内置标签的功能,但对于括号,您可以使用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)
(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 ">"))))
不知道在Emacs中有任何方法可以做到这一点,甚至没有模块可以实现。
我的Elisp有点生疏,但这里有一个简单的函数,可以将当前区域(标记文本)或单词用引号(")括起来:
(defun insert-quotes () "Inserts quotes (\") around the current region or work." (interactive) (let (start end bounds) (if (and transient-mark-mode mark-active) (setq start (region-beginning) end (region-end)) (progn (setq bounds (bounds-of-thing-at-point 'symbol)) (setq start (car bounds) end (cdr bounds)))) (goto-char start) (insert "\"") (goto-char (+ end 1)) (insert "\"")))
是的,截至一周前,surround.vim 的克隆已经存在:http://github.com/timcharper/vimpulse-surround.el
它需要 vimpulse 以及 vim的支持。它实现了 surround.vim 的大部分功能。
所以你想选择一个区域或类似的东西,然后像各种模式对评论做的那样在它周围画一个框?我相信emacs-wiki(http://www.emacswiki.org/)有一些ascii线艺术(以及figlet工具),可以做到这一点。搜索框、安静、线艺术...
############################
# #
# I AM REGION, WE ARE MANY #
# #
############################