c - Emacs 缩进功能

标签 c emacs indentation cc-mode

我在 Emacs 中以 cc-mode 工作,我发现缩进非常非常烦人。

作为一名 VIM 用户,我已经习惯了较长的缩进,并且可以随心所欲地按 tab 键到 tab 键。

在 Emacs 中,我的 TAB 被映射到 goto-line。首先,哪个函数用于缩进当前行(或者点后面的是什么)? indent-region 很烦人,因为您需要突出显示该区域。

其次,修复缩进的最佳方法是什么?

谢谢,

最佳答案

您可以通过 M-x describe-variable RET c-indentation-style 查看当前正在使用哪种制表符(但正如文档所述,不要直接设置此变量,而是使用 M-x c-set-style).

变量c-basic-offset是什么控制了 cc-mode 中的制表符它的默认值是 set-from-style 这意味着制表符将从您使用 M-x set-c-style 设置的 C 样式继承,这将让您选择来自一组 built-in styles (见下文)或者你可以 create your own style .您可以看到如何使用 M-x describe-variable RET c-style-alist 定义样式,然后您可以使用其中之一作为模板使用 M-x c-add-style.

  • gnu - 自由软件基金会认可的 GNU 程序中 C 代码的编码风格。
  • k&r - C 代码的经典 Kernighan 和 Ritchie 风格。
  • bsd - 在 Eric Allman 之后也被称为“Allman 风格”。
  • whitesmith - 通过早期商业 C 编译器 Whitesmiths C 附带的示例而流行。
  • stroustrup - C++ 代码的经典 Stroustrup 风格。
  • ellemtel - 由“C++ 编程、规则和建议”定义的流行 C++ 编码标准,Erik Nyquist 和 Mats Henricson,Ellemtel^1。
  • linux - Linux(内核)的 C 编码标准。
  • python - Python 扩展模块的 C 编码标准^2。
  • java - 用于编辑 Java 代码的样式。请注意,当您进入 java 模式时,c-default-style 的默认值会安装此样式。
  • awk - 用于编辑 AWK 代码的样式。请注意,当您进入 awk 模式时,c-default-style 的默认值会安装此样式。
  • user - 这是您创建的特殊样式。它包含所有样式变量的出厂默认值,这些变量由您使用自定义界面或通过在 .emacs 文件的顶层编写 setqs 和 c-set-offsets 进行的自定义修改(请参阅配置基础知识)。样式系统创建此样式作为其初始化的一部分,之后不会修改它。

更新:

其他人建议使用 tab 键插入 \t 制表符,但请不要强制插入制表符!正如 StackOverflow 的创建者之一所说 "only a moron would use tabs to format their code" .现在这有点苛刻,但值得注意的是,即使是两个最大的竞争对手,GoogleMicrosoft , 同意这一点(即使他们默认推荐不同数量的空格)。

Google says :

Use only spaces, and indent 2 spaces at a time.

Microsoft says :

Tab characters (\0x09) should not be used in code. All indentation should be done with 4 space characters.

另外,emacswiki 有一个关于 Tabs are Evil 的部分.

So, go forth and untabify !

关于c - Emacs 缩进功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9830383/

相关文章:

c - 如何破解这个位域?

c - "implementation"中的 "implementation (in)dependent"是什么意思?

windows - `git difftool` 拒绝在 Emacs 劣质外壳下运行

emacs - 如何从elisp获取带有反斜杠的Windows路径

Ruby:是否有缩进 case 语句的正确方法?

c - 这个 C 代码是如何工作的。我得到 56 作为 '\08' 的输出

c - 假装指向另一个指针后的自由指针

Emacs 中的 C++ 函数签名提示?

python - 在 Python 3 中使用带字节的 textwrap.dedent()

haskell - let 语句中的 case 语句需要什么缩进?