vim格式化C代码


    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
    解释下含义,
  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个空格。 

    这个工具非常有用,写代码的时候,就不必计较格式稍微有点不工整,同时编辑的时候还可以用tab键(总比不停敲四个空格效率高),显示的时候又不会混乱。

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

    采用这个之后配置之后,tab变成四个空格,无论在什么编辑器下看,都是一致的输出。
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main(int argc,char* argv[])
  4. {
  5.     int a = 4;
  6.     int b = 5;

  7.     int f_a = factorial(a);
  8.     int f_b = factorial(b);
  9.     while(1)
  10.     {
  11.         if(cmp(f_a,f_b))
  12.         {
  13.             printf("f_a is bigger than f_b\n");
  14.         }
  15.         else
  16.         {
  17.             printf("f_a is not bigger than f_b\n");
  18.         }

  19.         sleep(100);
  20.     }
  21.     
  22.     return 0;
  23. }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值