在Emacs中包含选择封闭字符的文本

时间:2010-06-01 17:12:05

标签: emacs text-editor textmate

在Textmate中,我可以通过选择并点击开头字符来围绕文本包围封闭的字符('(','[','''等)。例如,如果我选择word并点击(,它将成为(word)。Emacs如何调用此功能以及如何启用它?

9 个答案:

答案 0 :(得分:23)

对于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)

修改

关于覆盖backward-paragraph的评论中的好点。您可以将其绑定到 C - {,这可能会干扰主要模式中的某些内容。 insert-pair获取最后一个键并执行查找以查看要插入的对,因此如果您不想将其绑定到某些内容 - {,则可以绑定到此函数:< / p>

(defun my-insert-braces ()
  (interactive)
  (if (region-active-p)
      (insert-pair 1 ?{ ?})
    (insert "{}")
    (backward-char)))

答案 1 :(得分:7)

我使用http://www.emacswiki.org/emacs/ParEdit。 M-(正是这样。

答案 2 :(得分:6)

Autopair是这些工具中最好的一种

https://github.com/capitaomorte/autopair

答案 3 :(得分:5)

您可以查看wrap-region

答案 4 :(得分:5)

我还要看一下骨架模式 http://ggorjan.blogspot.com/2007/05/skeleton-pair-mode-in-emacs.html

它特别适用于括号。

答案 5 :(得分:2)

有textmate-mode。

来自Emacswiki:

请参阅textmate-mode以尝试使用括号和引号的TextMate行为(自动关闭,覆盖,智能删除)。

http://code.google.com/p/emacs-textmate/

答案 6 :(得分:1)

现在还有Corral。它的“做我的意思”行为使得这个过程比手动选择文本和按键更快。

(免责声明:我是作者)

答案 7 :(得分:1)

如果您使用smartparens,只需选择文本,然后键入该对。 Smartparens wiki: Wrapping

答案 8 :(得分:1)

自Emacs 24.1(2012-06发行)以来。
将其放在您的emacs初始化中:(电对模式1)。
现在,如果您选择一个单词并点击(,它将变成(单词)。与“,[,{等。