我的 emacs 总是使用 2 个(或 1 个)空格而不是像我希望的那样使用 ' ' 字符来缩进我的 C/C++ 代码。我已经尝试过
(setq indent-tabs-mode t)
,但没有任何作用。执行 M-i
确实会插入一个实际的制表符,但是一旦我输入“()”或“;”,它就会删除“ ”字符并插入 2 个空格。
是的,我尝试过使用 c++-mode-hook,但它使用 4 个空格而不是 ' ' 字符。
另外,如果不可能,我宁愿禁用自动缩进。
这是我的 init.el 文件:
;;Start package.el with emacs:
(require 'package)
;;Add Melpa to repository list:
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;;Initialize package.el:
(package-initialize)
;;Install auto-complete:
(package-install 'auto-complete)
(require 'auto-complete)
;;Use default config for every startup:
(require 'auto-complete-config)
(ac-config-default)
;;Install yasnippet:
(package-install 'yasnippet)
(require 'yasnippet)
(yas-global-mode 1)
;;Install auto-complete-c-headers mode:
(package-install 'auto-complete-c-headers)
;;Inhibits startup message:
(setq inhibit-splash-screen t)
;;Make emacs use tabs instead of spaces for indenting:
(setq indent-tabs-mode t)
;;Turn on electric pair mode (ie. auto-close brackets):
(electric-pair-mode 1)
;;Turn on gdb-many-windows mode:
(setq gdb-many-windows t)
PS。我发现 emacs 配置文件格式非常混乱,而且我根本不知道 elisp 之类的。
PS。如果有某种 emacs 已经可以做到这一点并且适合用作 C/C++ IDE,那么请告诉我。
indent-tabs-mode
变量是buffer-local,这意味着如果您使用setq
,则更改仅适用于本地缓冲区 - 在您的情况下是init.el
。
相反,您可以在 C++ 模式的钩子中自定义它,如下所示:
(defun my/c++-hook ()
(setq indent-tabs-mode t)
(setq tab-width 4)
)
(add-hook 'c++-mode-hook 'alexott/c-c++-hook)
附注您可以查看我的 CCMode 配置