Emacs 自动完成括号、缩进和换行 - 如何?

标签 emacs autocomplete

在 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/

相关文章:

linux - 放弃 X 会完全伤害吗?

macos - 在Mac OS X上,Vim和Emacs的首选版本是什么?

bash - 在终端(Bash)中,你如何自动完成文件名中间的部分匹配?

emacs - 如何使用自定义函数在组织模式下仅删除一些标签

emacs - 执行eval-expression时如何获得paredit模式?

linux - Linux 程序员如何在不使用 IDE 的情况下创建 GUI 应用程序?

java - 自动完成控制台文本

python - Sublime Text Python 自动完成

javascript - Jquery自动完成源php函数

php - jquery 在 wordpress 中自动完成