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

hek*_*ran 25 emacs textmate text-editor

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

sco*_*zer 23

对于parens你可以做M-(.对于括号/括号/引号,你可以这样做:

(global-set-key (kbd "M-[") 'insert-pair)
(global-set-key (kbd "M-{") 'insert-pair)
(global-set-key (kbd "M-\"") 'insert-pair)
Run Code Online (Sandbox Code Playgroud)

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

(global-set-key (kbd "M-)") 'delete-pair)
Run Code Online (Sandbox Code Playgroud)

编辑:

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

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

  • 唯一的问题是`M- {`不能再用于落后段=) (3认同)

slk*_*500 7

自 Emacs 24.1(2012-06 发布)以来。
把它放在你的 emacs init: (electric-pair-mode 1) 中。
现在如果你选择一个单词并点击 (, 它会变成 (word). ", [, { 等.


hek*_*ran 6

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

https://github.com/capitaomorte/autopair


Boz*_*sov 5

你可以看一下wrap-region.


pyg*_*iel 5

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

它非常灵活,尤其适用于括号.