Emacs输入大括号时自动缩进不符合预期如何修复?
Emacs代码缩进异常修复方案
你遇到的是类C语言模式下Emacs默认缩进规则导致的大括号偏移问题,可通过以下方式修复:
方案1:全局使用对齐大括号的预设缩进风格
Emacs内置的bsd缩进风格默认实现if/for等语句后的大括号与上层语句左对齐,直接在Emacs配置文件(通常是/.emacs或者/.emacs.d/init.el)中加入以下配置即可:
;; 所有C类语言默认使用bsd风格,基础缩进宽度设为4(可自行修改数值) (setq c-default-style "bsd" c-basic-offset 4)
如果仅需要给特定语言启用该规则,比如仅给C++设置,可使用钩子函数实现:
(add-hook 'c++-mode-hook (lambda () (c-set-style "bsd") (setq c-basic-offset 4)))
方案2:仅修改大括号的缩进偏移
如果你不想改动整体缩进风格,仅需要调整大括号的缩进规则,可修改C模式的偏移配置:
(add-hook 'c-mode-common-hook (lambda () ;; 子语句块起始大括号偏移量设为0,取消额外缩进 (c-set-offset 'substatement-open 0)))
修改后所有C类语言的块起始大括号都会与上一级语句左对齐,不会再出现多余缩进。
临时测试方法
如果不需要永久修改,仅想当前编辑的文件临时生效,可按下M-x,输入c-set-style后回车,再输入bsd回车,当前缓冲区的缩进规则就会立刻更新。
内容的提问来源于stack exchange,提问作者Lauren S
相关产品推荐
相关产品推荐

