vim格式化C代码

原文请见:http://blog.chinaunix.net/uid-24774106-id-3396220.html

linux下编C 代码,我一般是用vim这个古老又强大的编辑器。平时写代码的时候,可能对齐缩进做的不是十分完美,这都没关系,因为写的时候,关键是实现功能,代码完工以后,完全可以采用工具将代码整理的优美工整,但是不能太过分,如果写代码的过程中,发现格式特别混乱,这说明自己并没有想清楚逻辑,这时候要警惕。


    前两天GFree_Wind给我讲,我们代码风格要采用Kernel的风格,平时我写代码还算注意,但是也有不少小毛病,大家看我发博文贴上来的代码,有的地方缩进就是怪怪的,这是因为我在写完代码后,直接采用了自动缩进的排版工具,但是并没有将tab键转化成4个空格所致,我们知道不同的编辑器将tab解释为不同,我vim排完版,然后用gedit打开粘帖到CU 博客,就发现格式和我期待的很不一致。

    现在今天花了半个多小时,把用vim格式化代码中tab扩展成空格学习了下,写下这篇博文。去年的时候,我的老大波哥曾经教过我一次indent 这个自动缩进工具,可以个性化配置,可惜我当时有其他事情打断,没有好好学,至今学会的东西还远达不到波哥想教我的那些东西,可惜现在换了东家,不能常在身旁听波哥教导,深以为恨啊。波哥是很古典的那种程序员,编程习惯,平时爱好,都是那种古典 hacker式的,为人比较谦和,乐于分享,令我很是崇拜啊。

    
    在自己的目录下编辑自己的.vimrc,

  1. vim ~/.vimrc
添加下面的几行:
  1. : filetype indent on
  2. set et
  3. set ci
  4. set shiftwidth=4
  5. autocmd FileType make setlocal noexpandtab
    解释下含义,
  1. set ci
    表示采用类似c 语言的缩进风格。

                            与自动缩进相关的变量表
变量名 缩写 含义
(no)autoindent ai 自动缩进,即为新行自动添加与当前行同等的缩进。
(no)cindent ci 类似C语言程序的缩进
(no)smartindent si 基于autoindent的一些改进
    

  1. set et
    作用是展开tab,将用户输入的tab自动展开成若干个空格,至于多少空格,看shiftwidth。
与TAB相关的变量表
变量名 缩写 含义
tabstop=X ts 编辑时一个TAB字符占多少个空格的位置。
shiftwidth=X sw 使用每层缩进的空格数。
(no)expandtab (no)et 是否将输入的TAB自动展开成空格。开启后要输入TAB,需要Ctrl-V<TAB>
softtabstop=X sts 方便在开启了et后使用退格(backspace)键,每次退格将删除X个空格
(no)smarttab (no)sta 开启时,在行首按TAB将加入sw个空格,否则加入ts个空格。
    在这种情况下,可以格式化我们的C 代码了。

  1. 1 gg           回到文件的第一行
  2. 2 shift+v
  3. 3 shift+g      回到文件的最后一行
  4. 4 =            格式化
    这样就完毕了。这样出来了C 风格的缩进,同时也满足了tab键变成了4个空格。
   同时我们注意,Makefile的tab键不允许扩展成4个空格,否则会出现语法错误。所以我们用了 下面语句对Makefile类型特殊处理。

  1. autocmd FileType make setlocal noexpandtab
   另外一点对于新写的代码满足了table变成了4个空格,但是对老文件,并不会重新排版,用户可以采用如下命令重新解析tab键
 
  1. :retab
   工具非常有用,写代码的时候,就不必计较格式稍微有点不工整,同时编辑的时候还可以用tab键(总比不停敲四个空格效率高),显示的时候又不会混乱。

    采用这个之前,可以看到tab键并没有变成空格,不同的编辑器对tab的解读不同造成输出结果不是预期的。

     采用这个之后配置之后,tab变成四个空格,无论在什么编辑器下看,都是一致的输出。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值