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

在自己的目录下编辑自己的.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 =            格式化

(扩展一下,如果想要格式化当前光标之后的8行,没有第一步骤,第三步骤为:shift+8)

这样就完毕了。这样出来了C 风格的缩进,同时也满足了tab键变成了4个空格。

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

  1. autocmd FileType make setlocal noexpandtab

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

  1. :retab

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

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

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

【转】vim格式化C代码的更多相关文章

  1. vim格式化代码实际上就是 "缩进代码", 命令是等号=

    vim格式化代码实际上就是 "缩进代码", 命令是等号= 格式化就是 vim 根据 文件的类型, 自动的对代码进行 缩进 缩进的类型有多种, 都是用等号命令: = 全部格式化 : ...

  2. [VIM] 格式化代码

    快速使用vim格式化代码 在vim的编辑模式i下直接ESC退出道命令模式之后直接敲入如下命令: gg=G        将全部代码格式化 nG=mG    将第n行到第m行的代码格式化 注:如果ESC ...

  3. VIM格式化代码(How to format code with VIM)

    1) 按两下小写g,即gg,定位光标到第一行.(2) 按住Shift+v,即大写V,进入可视化编辑的列编辑模式.(3) Shift+g,即大写G,选中整个代码.(4) 按下等号=,格式化所有代码.

  4. Sublime text 3 如何格式化HTML代码

    使用Sublime text 3 编写代码是一种享受,使用Sublime text 3 格式化HTML代码,需要安装插件,具体安装步骤如下:   1.打开菜单->首选项->插件控制,输入 ...

  5. 使用Dreamweaver格式化HTML代码

    今天偶然发现了DreamWeaver(DW)的一个非常有用的功能,就是代码的格式化功能.一般情况下,我们写的html或者css代码都计较混乱,难以阅读,即使刚开始很在意代码的可读性,但是等到所使用的标 ...

  6. Arch Linux下Visual Stdio Code在格式化C代码时报错

    libtinfo.so.5: cannot open shared object file: No such file or directory Arch Linux下Visual Stdio Cod ...

  7. vim格式化markdown表格

    title: vim格式化markdown表格 date: 2017-11-23 15:23:25 tags: vim categories: 开发工具 安装插件 https://github.com ...

  8. Chrome格式化JavaScript代码

    很多第三方插件的脚本,是压缩后的代码,甚至时动态加载的,代码只有一行. Chrome提供了格式化脚本代码的功能,方便加断点调试. 1 在Sources面板中,点击脚本名称,打开脚本源码. 2 点击左下 ...

  9. CSS格式化 CSS代码压缩工具

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. NMON中的各项参数指标

    一.NMON中的各项参数指标: SYS_SUMM:显示当前服务器的总体性能情况 Total System I/OStatistics:Avg tps during an interval:显示采集间隔 ...

  2. 多图上传 - Web Uploader

    http://fex.baidu.com/webuploader/   官方DEMO,我都不想说了,各种问题.参考ShuaiBi文章   http://www.cnblogs.com/ismars/p ...

  3. 微信支付:“当前页面的URL未注册”

    最近在尝试着写微信支付方面的内容,今天下午的时候遇到了一个问题,也就是当前页面没有进行注册的问题. 在写好后台代码之后我在微信后台配置了测试授权目录和支付白名单,如下图所示,但是无论我如何进行测试总是 ...

  4. WPF中加载高分辨率图片性能优化

    在最近的项目中,遇到一个关于WPF中同时加载多张图片时,内存占用非常高的问题. 问题背景: 在一个ListView中同时加载多张图片,注意:我们需要加载的图片分辨率非常高. 代码: XAML: < ...

  5. hdu 4288 线段树 暴力 **

    题意: 维护一个有序数列{An},有三种操作: 1.添加一个元素. 2.删除一个元素. 3.求数列中下标%5 = 3的值的和. 解题思路: 看的各种题解,今天终于弄懂了. 由于线段树中不支持添加.删除 ...

  6. [Java] 使用Java Visual VM寻找PermGen Space的解决办法

    在Eclipse使用tomcat运行3个项目时,老是报这个错误,以下为错误详情: 2014-5-28 13:47:41 org.apache.catalina.core.StandardWrapper ...

  7. struct和typedef struct

    转自:http://www.cnblogs.com/qyaizs/articles/2039101.html struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++ ...

  8. java 存储对象

    一.存储区域: 1)寄存器.这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器根据需求进行分配.你不能直接控制,也不能在程序中感觉到寄存器存在的任何 ...

  9. [荐]js模版引擎handlebars.js

    [官方介绍:http://handlebarsjs.com/] Handlebars provides the power necessary to let you build semantic te ...

  10. vmware虚拟机检测

    jpg改rar