在 C 中 - 我希望当我输入 { 然后 } 时,emacs 将在它们之间插入一个新行,然后将光标设置在它们之间。例如:
int main() {
现在我输入 } 并发生以下情况:
int main()
{
//cursor is here
}
编辑:忘了提-我希望emacs知道,在定义一个函数时,它应该执行上述操作,但是在执行for循环或if语句时,例如我希望它执行以下操作:
if (bla bla) {
输入 } 和...:
if (bla bla) {
//cursor here
}
最佳答案
如果您不介意这种行为几乎与您描述的方式不同,但不完全是您描述的方式,那么有一种内置方法可以做到这一点。这是自动换行功能,可以使用组合键 C-c C-a
激活或者这一行你的.emacs:
(c-toggle-auto-newline 1)
不同之处在于它将在输入左大括号 { 后立即进行重新格式化。当您最终输入右大括号时,它也会以正确的方式缩进。
您还需要设置正确的 CC 模式样式。样式“cc-mode”似乎以您描述的方式定义事物。您可以使用组合键
C-c .
激活它然后选择 cc-mode 或 .emacs 行(c-set-style "cc-mode")
c 模式函数是自动加载的,因此在加载 .emacs 文件时通常不可用。因此,您应该将它们包装在 c 模式的钩子(Hook)中,就像这样
(add-hook 'c-mode-hook
(lambda ()
(c-toggle-auto-newline 1)
(c-set-style "cc-mode")))
关于Emacs 自动完成括号、缩进和换行 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5195963/