Emacs中是否有类似于surround.vim的扩展或模式?

时间:2010-04-30 17:36:20

标签: vim emacs surround

Surround.vim是一个漂亮的vim扩展,允许你用括号,括号和几乎任意“环绕”字符包围文本块。它支持段落和单词环绕,但我经常在可视模式下使用它。 我正在玩Emacs并想知道是否有类似的东西;可以让我突出显示某个区域,然后用括号,括号或标签括起来的标记区域(或矩形)。

7 个答案:

答案 0 :(得分:28)

也许wrap-region是你需要的。

如果需要用分隔符,标签等包装,

smartparens是另一个很好的选择。

答案 1 :(得分:8)

我使用evil-surround。它模仿vim行为,但遗憾的是,大多数emacs用户可能不会这样,因为它需要evil vim模式。 但是,它可能适合您,也可能不适合您,因为您首先引用了surround.vim。

evil-surround似乎支持Surround.vim中的大部分功能,包括修改环境。

答案 2 :(得分:4)

我认为标签没有内置任何东西,但是对于parens你可以做 M - (。对于括号/大括号/引号你可以做:

(global-set-key (kbd "M-[") 'insert-pair)
(global-set-key (kbd "M-{") 'insert-pair)
(global-set-key (kbd "M-\"") 'insert-pair)

请注意,如果您没有突出显示区域,则只需插入一对whatevers并将光标放在它们之间。删除匹配的whatevers也很方便

(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 ">"))))

答案 3 :(得分:1)

在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 "\"")))

答案 4 :(得分:1)

是的,自1周前开始,环绕着surround.vim的克隆:http://github.com/timcharper/vimpulse-surround.el

它需要vimpulse,这需要vim。它实现了很多surround.vim的功能。

答案 5 :(得分:0)

也许evil-surround正是您所寻找的。

感谢。

答案 6 :(得分:-2)

所以你想选择一个区域或类似区域,然后围绕它创建一个方框,就像各种模式的评论一样?我相信emacs-wiki(http://www.emacswiki.org/)有一些ascii-line艺术(以及一个figlet工具)可以做到这一点。搜索框,相当,线条艺术...

############################
#                           #
# I AM REGION, WE ARE  MANY #
#                           #
############################