Emacs括号自动补全
发表于 : 2012-02-14 14:00
输入'('可以自动补全')',并且将光标放置到括号中间。支持多种符号匹配。理论可以匹配任意字符。
通过内置的skeleton.el来实现。
原理是编辑skeleton-pair-alist,把想要配对的符号列进去。
再使用skeleton-pair-insert-maybe函数进行相应的匹配。
[lisp]
;; 填入大中小括号,双单引号的匹配
;; 详细格式可以参照C-h f skeleton-pair-alist
(setq skeleton-pair-alist
'((?\" _ "\"" >)
(?\' _ "\'" >)
(?\( _ ")" >)
(?\[ _ "]" >)
(?\{ _ "}" >)))
(setq skeleton-pair t)
;; 绑定全局键值
;; 也可以绑定单独到某个mode,比如cc-mode (define-key cc-mode-map (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\'") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
[/lisp]
通过内置的skeleton.el来实现。
原理是编辑skeleton-pair-alist,把想要配对的符号列进去。
再使用skeleton-pair-insert-maybe函数进行相应的匹配。
[lisp]
;; 填入大中小括号,双单引号的匹配
;; 详细格式可以参照C-h f skeleton-pair-alist
(setq skeleton-pair-alist
'((?\" _ "\"" >)
(?\' _ "\'" >)
(?\( _ ")" >)
(?\[ _ "]" >)
(?\{ _ "}" >)))
(setq skeleton-pair t)
;; 绑定全局键值
;; 也可以绑定单独到某个mode,比如cc-mode (define-key cc-mode-map (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\'") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
[/lisp]