vim格式化C代码(亲测有效)

转自:http://blog.chinaunix.net/uid-24774106-id-3396220.html

vim ~/.vimrc
添加下面的几行:

: filetype indent on
set et
set ci
set shiftwidth=4
autocmd FileType make setlocal noexpandtab

set ci
表示采用类似c 语言的缩进风格.

下表解释下参数具体含义

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

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  gg          到文件的第一行
2 shift+v
3 shift+g      到文件的最后一行
4 =            格式化

(扩展一下,如果想要格式化当前光标之后的8行,没有第一步骤,第三步骤为:shift+8)
这样就完毕了。这样出来了C 风格的缩进,同时也满足了tab键变成了4个空格。

注意,Makefile的tab键不允许扩展成4个空格,否则会出现语法错误。所以用下面语句对Makefile类型特殊处理。

autocmd FileType make setlocal noexpandtab

另外一点对于新写的代码满足了table变成了4个空格,但是对老文件,并不会重新排版,用户可以采用如下命令重新解析tab键

:retab

采用这个之后配置之后,tab变成四个空格,无论在什么编辑器下看,都是一致的输出。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。