我已经使用XCode和Netbeans,并且我注意到它们有一个自动完成引号或圆括号的功能(并且我认为其他IDE也经常这样做)。我不知道这个特性的名字是什么,但是在Emacs中有没有办法做到这一点?是否可以在emacs中自动完成圆括号或引号?
例如,当I型
printf("
我想它自动输入
printf("")
将光标放置在引号之间。
谢谢。
我已经使用XCode和Netbeans,并且我注意到它们有一个自动完成引号或圆括号的功能(并且我认为其他IDE也经常这样做)。我不知道这个特性的名字是什么,但是在Emacs中有没有办法做到这一点?是否可以在emacs中自动完成圆括号或引号?
例如,当I型
printf("
我想它自动输入
printf("")
将光标放置在引号之间。
谢谢。
我正在使用http://cmarcelo.wordpress.com/2008/04/26/a-little-emacs-experiment/的代码来执行“电子对”。正如我在my blog中描述的那样,其他模式在Python的三重引号字符串中存在问题。 (一个Python的特点)
如果你键入M-(,它将同时插入一个(和一个)和离开点;如果你然后键入M-),这将移动关闭点)。我经常用这个。
还有一种称为“paredit”的模式(可从http://mumble.net/~campbell/emacs/paredit.el获得),它也可以用于引用以及可能的其他内容。
Paredit模式默认插入匹配闭合元素,所以在输入的同时您将看到类似printf()
然后printf("")
的东西,并且光标将位于引号内。
autopair小模式完全符合您的要求。
我的5分钱也在这里。
(setq skeleton-pair t)
(defvar skeletons-alist
'((?\(. ?\))
(?\" . ?\")
(?[ . ?])
(?{ . ?})
(?$ . ?$)))
(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)
下一页咨询将使退格以删除对:一个(|)B - > AB
(defadvice delete-backward-char (before delete-empty-pair activate)
(if (eq (cdr (assq (char-before) skeletons-alist)) (char-after))
(and (char-after) (delete-char 1))))
下一页建议将使backward-kill-word
(对我来说是M-退格)即使被其他文本分隔也可以删除匹配的文件;非常便利。
(defadvice backward-kill-word (around delete-pair activate)
(if (eq (char-syntax (char-before)) ?\()
(progn
(backward-char 1)
(save-excursion
(forward-sexp 1)
(delete-char -1))
(forward-char 1)
(append-next-kill)
(kill-backward-chars 1))
ad-do-it))
虽然我现在试图移动到paredit。
由于Autopairs似乎没有自动删除对,这个反向删除对建议看起来像一个很好的补充。 – beardc 2010-10-23 13:18:00
我之前使用过这样的宏,但我今天使用了很多不同的编辑器(emacs,vs,eclipse,pn),我不能依赖这样的特性。相反,我内化了这种行为,并且几乎不需要反射地插入相应的平衡字符就可以输入左侧字符。看到我这样做的非程序员认为我很奇怪。 – Zano 2010-10-22 08:47:11