vi的编码风格
在Linux下,比较流行的“行业”风格有KR的编码风格、gnu的编码风格、linux内核的编码风格(基于KR的,缩进是8个空格)等,它们都可以通过indent命令格式化,对应的选项分别是- kr,-gnu, -i8。下面演示用indent把代码格式化成上面的三种风格。
Quote: |
$ vim test.c |
从演示中可看出编码风格真的很重要,但是如何养成良好的编码风格呢?经常练习,遵守某个编码风格,一如既往。不过这还不够,如果没有一个好编辑器,习惯也很难养成。而VIM提供了很多辅助我们养成良好编码习惯的功能,这些都通过它的命令模式提供。现在分开介绍几个功能;
语法加“靓”(亮) :sytax on
自动缩进宽度(需要set cin才有用):set sw=8
TAB宽度:set ts=8
显示行号;set number
括号自动匹配;set sm
C语言自动缩进:set cin
这几个对代码编写来说非常有用,可以考虑把它们全部写到~/.vimrc文件(vim启动的时候会去执行这个文件里头的内容)中,如;
Quote: |
$ vim ~/.vimrc |
需要补充的几个技巧有;
· 在编辑模式下,可通过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>等。