abourd.vim 是一个漂亮的VIM扩展程序,可让您在文本块中包围,支架,括号和几乎所有任意的“环绕”字符。它支持段落和单词环绕,但我经常在视觉模式下使用它。我正在和emacs一起玩,想知道是否有类似的东西。可以让我突出显示一个区域,然后将标记区域(或矩形)封闭在带括号,支架或标签的东西。

有帮助吗?

解决方案

也许 包裹区 是您需要的。

聪明的培训 如果需要将某些内容包裹在定界符,标签等方面,这是另一个绝佳的选择。

其他提示

我用 邪恶. 。它模拟了VIM的行为,但不幸的是可能不是大多数Emacs用户想要的,因为它需要 邪恶的 VIM模式。但是,由于您首先引用了abourn.vim,因此它可能适合您,也可能不适合您。

Evil-Surround似乎支持围绕环境中的大多数功能,包括修改环境。

我认为标签中没有任何内置的东西,但是对于帕伦斯来说,你可以做 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 ">"))))

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

是的,截至1周前,有一个环绕vim的克隆: http://github.com/timcharper/vimpulse-surround.el

它需要Vimpulse,这需要VIM。它实现了周围的大部分功能。

也许 邪恶 是您要寻找的。

谢谢。

因此,您想选择一个区域或类似的区域,然后像各种模式一样围绕它制作一个盒子?我相信Emacs Wiki(http://www.emacswiki.org/)有一些ASCII-Line艺术(还有一个无花果工具)可以做到这一点。搜索盒子,是线条艺术...

############################
#                           #
# I AM REGION, WE ARE  MANY #
#                           #
############################
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top