我已经看到了插件的Vim称为AutoClose(从this交发现),其自动添加打字时闭括号“(”,“{”等在Emacs中自动关闭大括号?
例如,当我键入以下(|
是光标):
int main(|
我想收)
自动为我插入:
int main(|)
有谁知道SIM卡的emacs的ilar功能 - 谷歌这次失败了!
我已经看到了插件的Vim称为AutoClose(从this交发现),其自动添加打字时闭括号“(”,“{”等在Emacs中自动关闭大括号?
例如,当我键入以下(|
是光标):
int main(|
我想收)
自动为我插入:
int main(|)
有谁知道SIM卡的emacs的ilar功能 - 谷歌这次失败了!
还有'paredit
。 cheat sheet显示所有可用的命令。碰巧喜欢它比另一个答案中建议的电动模式更好。尽管paredit只适用于(),所以它可能不会满足您的需求。
但是,老实说,围绕括号有一堆包。这个wiki有全部listed here。解决你的问题的模式是:
是,this mode is called electric。在你最喜欢的编程模式结合适当的字符给它
(defun electric-pair()
"If at end of line, insert character pair without surrounding spaces.
Otherwise, just insert the typed character."
(interactive)
(if (eolp) (let (parens-require-spaces) (insert-pair))
(self-insert-command 1)))
然后启用:您可以将电行为,这个简单的宏最大的舒适相结合。例如,对于PythonMode:
(add-hook 'python-mode-hook
(lambda()
(define-key python-mode-map "\"" 'electric-pair)
(define-key python-mode-map "\'" 'electric-pair)
(define-key python-mode-map "(" 'electric-pair)
(define-key python-mode-map "[" 'electric-pair)
(define-key python-mode-map "{" 'electric-pair)))
的CPerl模式提供了这是一个内置:
;; from my .emacs
(add-hook 'cperl-mode-hook
(lambda()
(setq cperl-hairy nil
abbrev-mode t ;; automatic keyword expansion
cperl-highlight-variables-indiscriminately t
cperl-auto-newline t
cperl-auto-newline-after-colon t
cperl-regexp-scan nil
cperl-electric-keywords t
cperl-electric-linefeed t
cperl-electric-parens nil) ;; <------ electric parens!
其他模式可以提供类似的东西。
cmarcelo has written a wonderful post about this using skeleton mode。他还介绍了如何删除平头括号,如果删除了开头括号以及如何处理不小心键入了右括号的情况。 (顺便说一句,两种行为都复制TextMate)。
更新:
因为我张贴了这个答案,我发现Autopair这是一个非常完美的这种使用情况的系统。我一直在使用它,并热爱它。
我要这个线程necro并提供另一种选择。最近开始的一个新项目处理自动插入对,区域包裹,平衡表达式导航等等。功能列表太长而无法在此处显示,因此我只会链接到smartparens github repo,您可以在此阅读详细的自述文件。
它是上述AutoPair的超集,提供了大多数paredit的核心功能(并扩展到各种不同的对,不仅仅是那些由emacs语法表识别的)。
'电对模式'已经内置在emacs 24中,可以被'(电对模式1)'使用。 [链接](http://ergoemacs.org/emacs/emacs_insert_brackets_by_pair.html)。 – liuminzhao 2013-10-25 18:37:21
电动模式不会关闭单引号和大括号。无论如何,以启用该? – 2015-03-13 05:46:36
只需M-x定制组'电',并寻找'电对配对'。但要注意的是,无论您的主要模式如何设置都可能是不明智的 - 例如在文本模式下 - 其他主要模式通常会提供自定义,即。 Python单引号按预期工作(增加了结尾))。 – bubak 2015-04-01 09:20:25