是否存在一种 Emacs 智能括号匹配插件/配置?

4
在emacs中,是否有一种模式,如果我键入(它会自动关闭它,就像这样(),但如果我把它放在单词前面,比如(word,它不会变成()word,而是聪明地保持为(word?我尝试了smartparens和autopair但都没有成功,也许我没有正确配置它们?

是为编程还是为散文? - Svante
2个回答

4

使用内置的(自版本24.某个版本以来)electric-pair-mode进行保守配对:

(setq-default electric-pair-inhibit-predicate 'electric-pair-conservative-inhibit)
(electric-pair-mode 1)

3

对于编程,我发现paredit能提供我所需的一切。它保持平衡性。

输入左括号时,也会在光标后面自动添加右括号:

(()

你可以直接用新的一对括号将点后的表达式括起来:

Meta-((expr)

还有许多其他命令可以吞入和移出子表达式以及前后交换表达式,移动到不同的层次等等,所有这些都保持了括号的平衡性。

例如,如果你有一些表达式(|表示光标):

|expr1 expr0 expr2 expr3

Meta-(

(|expr1) expr0 expr2 expr3

Ctrl-Shift-)

(|expr1 expr0) expr2 expr3

Ctrl-Shift-)

(|expr1 expr0 expr2) expr3

Meta-f

(expr1| expr0 expr2) expr3

Ctrl-Meta-t

(expr0 expr1| expr2) expr3

Ctrl-{

expr0 (expr1| expr2) expr3

Ctrl-Meta-u

expr0 |(expr1 expr2) expr3

Ctrl-Meta-f

expr0 (expr1 expr2) |expr3

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