我刚开始使用emacs,因为我以前一直在使用Visual Studio。 有没有办法在emacs中为大括号提供相同类型的自动完成功能?
我的意思是,在Visual Studio中输入this(“|”是光标):
int foo()
{|
我明白了:
int foo()
{
|
}
我尝试使用电动对模式,但它只是关闭了花括号。 我希望我很清楚,英语不是我的母语。
编辑:
@Rupert Swarbrick electric-pair-open-newline-between-pairs
似乎在我的emacs中没有设置为true。当我启用electric-pair-mode
并在括号后按return
时,我得到了这个:
int foo()
{
|}
光标与结束括号位于同一行,我必须手动转到上面的行来编写有点烦人的代码。
我在哪里可以修改electric-pair-mode
以检查它是否设置为true?我还没找到。
编辑2:
感谢@Rupert Swarbrick的帮助,我现在正在使用autopair.el
,因为我使用的是emacs 24.3,它可以满足我的需求。对于使用emacs的人来说,24.4或更高版本electric-pair-mode
已升级,您可以使用Rupert所说的内容。
答案 0 :(得分:0)
看看electric-pair-mode
的内容,看起来你可以通过自定义任何变量来实现这一点,但一切都不会丢失!如果electric-pair-open-newline-between-pairs
为真(默认值),那么您会发现键入{
然后返回键应该为您提供
{
<- cursor here
}
你想要的。
为了避免输入额外的换行符,我们想要假装用户在键入开头{
后立即键入它。为此,我们可以编写下面的函数。这将检查electric-pair-mode
是否已启用,我们希望在对之间打开新行(if
块是从elec-pair.el
中的逻辑复制的),用户只是键入了{{ 1}}并且我们坐在{
对中(结束{}
已经通过电子对模式添加了。如果这些都是真的,它会调用}
第二个参数指定它应该表现得好像用户实际输入换行符(而不是仅插入newline
并停止)。此时,正常的\n
代码运行并重新接收所有内容,因为我们想。
最后,我们需要确保在正确的时间运行。一种方法是将其作为“建议”添加到electric-pair-mode
。这样,只要启用电子对模式,它就会在正确的时间运行。
将以下elisp代码粘贴到electric-pair-post-self-insert-function
并尝试一下:
.emacs