Emacs-010-C语言缩进使用Tab且显示为4字符宽度
发布日期:2021-06-30 03:33:49 浏览次数:3 分类:技术文章

本文共 2199 字,大约阅读时间需要 7 分钟。

Emacs-010-C语言缩进使用Tab且显示为4字符宽度

       Emacs的缩进可真让我头疼,昨天晚上看了半晚上,今天白天又花了不少时间还是没有做到完美。但是,在C语言中这部分功能已经初步实现了我想要的结果。

       实现目标:

1.    输入Tab键后不会立即被空格替换;

2.    Tab的宽度显示为4个字符宽度;

3.    自动缩进修整的功能尽量关闭,这样能够在退格的时候一次把Tab缩进全部删除。

这样,需要实现的功能如下:

1.  输入Tab键的手插入的只有一个Tab

最初这部分我尝试了几个别人的配置没有弄明白,后来找到了一篇不错的文章找到了相应的解释如下:

What should be inserted when I press the TAB key?

    True TAB characters only

    Spaces only

    A combination of TABs and spaces (default)

Tab按键输入的结果不过是上面的几种,我需要的自然是第一个。具体的实现方式如下:

(global-set-key(kbd "TAB") 'self-insert-command)

2. 接下来,把Tab设置为显示为4个字符宽度。实现方式:

(setqdefault-tab-width 4)

3. 上面的方式实现后,编辑一般文件已经可以。但是编辑C文件会被传说中的智能缩进给破坏。解决方式是配置C语言的编辑模式,实现方式如下:

(defunmy-c-mode-hook ()  (setq c-basic-offset 4        c-indent-level 4        c-default-style "bsd"))(add-hook'c-mode-common-hook 'my-c-mode-hook)

4. 经过上面三部,在编辑缩进上已经基本实现了想要的效果。但是退格删除依然需要四次,接下来再进行一次改进修改。增加下面的配置:

(setqbackward-delete-char-untabify-method nil)

这样,整个的配置模块就是如下的情况:

(global-set-key(kbd "TAB") 'self-insert-command)(setqdefault-tab-width 4)(setqbackward-delete-char-untabify-method nil)(defunmy-c-mode-hook ()  (setq c-basic-offset 4        c-indent-level 4        c-default-style "bsd"))(add-hook'c-mode-common-hook 'my-c-mode-hook)

经过10次配置之后,我的Emacs配置文件如下:

(custom-set-variables ;;custom-set-variables was added by Custom. ;;If you edit it by hand, you could mess it up, so be careful. ;;Your init file should contain only one such instance. ;;If there is more than one, they won't work right. )(custom-set-faces ;;custom-set-faces was added by Custom. ;;If you edit it by hand, you could mess it up, so be careful. ;;Your init file should contain only one such instance. ;;If there is more than one, they won't work right. '(default ((t (:family "Courier New":foundry "outline" :slant normal :weight normal :height 98 :widthnormal)))));; Disable files backup function(setq make-backup-files nil)(setq line-number-mode t)(global-linum-mode t);; Config Tab;;;; This will force Tab to be just oneTab.(global-set-key (kbd "TAB")'self-insert-command)(setq default-tab-width 4)(setq backward-delete-char-untabify-methodnil)(defun my-c-mode-hook () (setq c-basic-offset 4       c-indent-level 4       c-default-style "bsd"))(add-hook 'c-mode-common-hook'my-c-mode-hook)

转载地址:https://greyzhang.blog.csdn.net/article/details/78916159 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Emacs-011-设置load-path
下一篇:Emacs-009-让Tab键不被空格替换

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月07日 07时30分39秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章