让M-(成为Emacs中键入“(”的默认行为

7

如何将 M-( 设为输入左括号 "(" 的默认行为?我希望在输入 "(" 时,Emacs 能够自动在光标后插入右括号 ")",无论它是否是 M 键组合的一部分。此外,我还想将这种行为扩展到引号、子引号、方括号和花括号中。输入 M-( 很麻烦,而其他字符似乎没有类似的形式。

3个回答

6

我自己不太写elisp,但这是我从别人那里学来的。这段代码需要放入你的.emacs文件中。

(setq skeleton-pair t)
(setq skeleton-pair-on-word t) ; apply skeleton trick even in front of a word.                                               
(global-set-key "[" 'skeleton-pair-insert-maybe)
(global-set-key "{" 'skeleton-pair-insert-maybe)
(global-set-key "(" 'skeleton-pair-insert-maybe)
(global-set-key "\"" 'skeleton-pair-insert-maybe)

谢谢 - 我不知道有 skeleton-pair-on-word 这个东西。 - Bill White

5

请查看paredit.el,它可以按照您的要求保持括号/大括号/引号的平衡,并且还提供许多其他功能来帮助处理s表达式。如果您将编写Lisp代码(正如您的名称所示),那么您可能最终会想使用此库。


3
"self-insert-command绑定了"(",而M-'('绑定了insert-parenthesis。您可以通过使用global-set-keydefine-key将"("绑定到insert-parenthesis来简单地反转它们的绑定关系。"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接