括号内的缩进而不是emacs中的右括号旁边的缩进

时间:2014-05-21 19:50:49

标签: c emacs indentation

我终于做了大跳,让Vim留给了Emacs,我可以说我已经非常高兴了(现在不是速度......但是会赶上来)。 / p>

但是,有一件事我想弄明白......

例如,当我在 C 中编写for循环时,添加一个开括号,这就是我得到的

code1 http://i57.tinypic.com/2re16as.png

然后我按C-j展开大括号,这就是我结束的地方。

code2 http://i57.tinypic.com/33o776v.png

问题是,我已经习惯了(这就是我的vim的配置方式)

code3 http://i60.tinypic.com/11s2e4o.png

但我无法弄清楚如何做到这一点......我刚刚开始使用emacs和lisp,并且看起来已经被那个小小的东西所淹没了。我已经映射了一个和弦,所以当我按kk时,我在当前行上方插入一个空行并正确缩进。所以现在,我所做的是RET kk,但我希望我的返回键能够自行完成。

1 个答案:

答案 0 :(得分:3)

您可以使用c-hanging-braces-alist

配置插入换行符的位置
  

悬挂式牙套
  要指定要放置自动换行符的大括号类型,请设置样式变量c-hanging-braces-alist

,例如,将大括号与for保持在同一行,并在其后插入换行符

(custom-set-variables
 '(c-hanging-braces-alist (quote ((substatement-open . (after))))))

另一种方法可能是使用Yasnippet并定义适当的模板

# -*- mode: snippet -*-
# name: for
# --
for ($1; $2; $3) {
$0
}

现在您可以输入 标签,Yasnippet会自动插入

for (; ; ) {

}

并等待您插入字段,并在完成后将光标留在大括号之间。