在 Textmate 中,我可以通过选择文本并按下开放字符('(','[','"'等)来将包围字符('(','[','"'等)绕在文本周围。例如,如果我选择
word
并按下(
,它会变成(word)
。Emacs 如何称呼此功能并如何启用它?word
并按下(
,它会变成(word)
。Emacs 如何称呼此功能并如何启用它?对于括号,你可以使用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)
编辑:
评论中提到了一个好的观点,即覆盖backward-paragraph
。你可以将其绑定到C-{,这可能会干扰某个主要模式中的某些内容。 insert-pair
获取最后一个键并查找要插入的配对,因此如果您不想将其绑定到something-{,则可以将其绑定到此函数。
(defun my-insert-braces ()
(interactive)
(if (region-active-p)
(insert-pair 1 ?{ ?})
(insert "{}")
(backward-char)))
有一个叫做textmate-mode的东西。
来自Emacswiki:
查看textmate-mode,尝试实现TextMate对括号和引号的行为(自动关闭、覆盖、智能删除)。
M-{
不能再用于向后段落 =) - hekevintran(global-set-key (kbd "M-[") 'insert-pair)
,那么每当我执行鼠标操作时,Emacs都会插入转义字符垃圾(但这只适用于'M-[')。 - rien333