vi的编码风格

vi的编码风格

 

Linux下,比较流行的行业风格有KR的编码风格、gnu的编码风格、linux内核的编码风格(基于KR的,缩进8个空格)等,它们都可以通过indent命令格式化,对应的选项分别是- kr,-gnu, -i8。下面演示用indent把代码格式化成上面的三种风格。

Quote:

$ vim test.c
$ cat test.c                  //
这样糟糕的编码风格看者会让人想,太难阅读啦。
cat test.c
/* test.c -- a test program for using indent */
#include<stdio.h>

int main(int argc, char *argv[])
{
 int i=0;
 if (i != 0) {i++; }
 else {i--; };
 for(i=0;i<5;i++)j++;
 printf("i=%d,j=%d/n",i,j);

 return 0;
}
$ indent -kr test.c
$ cat test.c            //
好看多了
/* test.c -- a test program for using indent */
#include<stdio.h>

int main(int argc, char *argv[])
{
    int i = 0;
    if (i != 0) {
        i++;
    } else {
        i--;
    };
    for (i = 0; i < 5; i++)
        j++;
    printf("i=%d,j=%d/n", i, j);
    return 0;
}
$ indent -gnu test.c
$ cat test.c      //
感觉不如kr的风格,处理if语句时增加了代码行,却并没明显改进效果
/* test.c -- a test program for using indent */
#include<stdio.h>

int
main (int argc, char *argv[])
{
  int i = 0;
  if (i != 0)
    {
      i++;
    }
  else
    {
      i--;
    };
  for (i = 0; i < 5; i++)
    j++;
  printf ("i=%d,j=%d/n", i, j);
  return 0;
}



   
从演示中可看出编码风格真的很重要,但是如何养成良好的编码风格呢?经常练习,遵守某个编码风格,一如既往。不过这还不够,如果没有一个好编辑器,习惯也很难养成。而VIM提供了很多辅助我们养成良好编码习惯的功能,这些都通过它的命令模式提供。现在分开介绍几个功能;

语法加(亮) :sytax on
自动缩进宽度(需要set cin才有用):set sw=8
TAB
宽度:set ts=8
显示行号;set number
括号自动匹配;set sm
C
语言自动缩进set cin

   
这几个对代码编写来说非常有用,可以考虑把它们全部写到~/.vimrc文件(vim启动的时候会去执行这个文件里头的内容)中,如;

Quote:

$ vim ~/.vimrc
$ cat ~/.vimrc
:set number
:set sw=8
:set ts=8
:set sm
:set cin
:syntax on



需要补充的几个技巧有;

·  在编辑模式下,可通过gqap命令对注释自动断行(每行字符个数可通过命令模式下的"set textwidth=个数"设定)

·  命令模式下输入数字可以直接跳到指定行,也可在打开文件时用“vim +数字 文件名实现相同的功能。

·  命令模式下的TOhtml命令可把C语言输出为html文件,结合syntax on,可产生比较好的web page把代码发布出去。

·  先切换到可视模式(编辑模式下按字母v可切换过来),用光标选中一片代码,然后通过命令模式下的命令“s#^#//#g"把某一片代码给注释掉,这非常方便调试某一片代码的功能。

·  命令模式下的”set paste“可解决复制本来已有缩进的代码的自动缩进问题,后可执行”set nopaste“恢复自动缩进

·  为了使用最新的vim特性,可用"set nocp"取消与老版本的vi的兼容。

·  如发现变量命名不好,想在整个代码中修改,可在命令模式下用"%s#old_variable#new_variable#g"全局替换。替换的时注意变量名是其他变量一部分的情况。

·  如果想把缩进TAB键替换成空格,可考虑设置expandtab,即“set et”,如果要把以前编写的代码中的缩进TAB键都替换掉,可以用retab

·  为实现关键字补全,输入一部分字符后,按下CTRL+P即可。比如先输入prin,然后按下CTRL+P就可以补全了。

·  如果想在在编辑模式下查看Linux手册,可把光标定位到在某个函数,按下Shift+k就可以调出man,很有用。

·  删除空行,在命令模式下输入g/^$/d,前面g命令是扩展到全局,中间是匹配空行,后面d命令是执行删除动作。用替换也可以实现,键入%s#^/ n##g,意思是把所有以换行开头的行全部替换为空。类似地,如果要把多个空行转换为一个可以输入g/^/n$/d或者%s#^/n$##g

·  注意使用一些有用的插件,比如ctags, cscope等,可以提高代码阅读、分析的效率。特别是open source的东西。


更多的技巧可以看看资料[2],[6],[7]

   
实际上,在源代码编写时还有很多需要培养的素质,例如源文件的开头注释、函数的注释,变量的命名等。这方面建议看看参考资料里的编程修养、内核编码风格、网络上流传的《华为编程规范》,以及<C Traps & Pitfalls>等。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值