vim-autoformat是Vim的一款自动化格式代码工具,同类软件还有vim-clang-format
和Google开发的codefmt等,不过这些都只是一个框架,要使用它们还需要相应语言的格式化工具,对于vim-autoformat这里推荐几个常用的工具,分别是astyle(支持C, C++, C++/CLI, Objective‑C, C#和Java),clang-format(支持C, C++,和Objective-C ),python-pep8,python3-pep8,python-autopep8和yapf(Google开发的Python格式化工具),对于Debian系在终端执行下面命令即可完成安装

$ sudo aptitude install astyle clang-format python-pep8 python3-pep8 python-autopep8 yapf

1

默认情况下,它会使用Google的风格来格式化C家族的代码,对于Python则使用PEP8的风格,配置如下

"auto-format
"F5自动格式化代码并保存
noremap <F5> :Autoformat<CR>:w<CR>
let g:autoformat_verbosemode=1

如果不想每次都按F5格式化代码,希望能在保存时自动格式化或者针对某种语言自动格式化,可以这样设置

"自动格式化代码,针对所有支持的文件
au BufWrite * :Autoformat
"自动格式化python代码
"au BufWrite *.py :Autoformat

在安装了yapf以后,还可以自定义python格式化的风格,

"默认情况下是pep8,还可以选择google,facebook和chromium
let g:formatter_yapf_style = 'pep8'

更进一步的,你还可以针对某种语言指定特定的格式化工具和相应的参数,比如设定以allman(ansi)的风格格式化C/C++代码同时在操作符两边加入空格(即--pad-oper参数),可以这样写

let g:formatdef_allman = '"astyle --style=allman --pad-oper"'
let g:formatters_cpp = ['allman']
let g:formatters_c = ['allman']

如果还需要对其他语言进行格式化或者修改配置可以参考github主页上的说明。
当然,格式化代码也不一定非要安装插件才能实现,因为Vim可以执行外部命令,因此你也可以写一个函数调用外部工具来实现代码格式化,比如下面就用函数调用astyle和autopep8来格式化代码

map <F2> :call FormatCode()<CR>
func! FormatCode()
    exec "w"
    if &filetype == 'c' || &filetype == 'h'
        exec "!astyle --style=allman --suffix=none %"
    elseif &filetype == 'cpp' || &filetype == 'cc' || &filetype == 'hpp'
        exec "!astyle --style=allman --suffix=none %"
    elseif &filetype == 'perl'
        exec "!astyle --style=gnu --suffix=none %"
    elseif &filetype == 'py'|| &filetype == 'python'
        exec "!autopep8 --in-place --aggressive %"
    elseif &filetype == 'java'
        exec "!astyle --style=java --suffix=none %"
    elseif &filetype == 'jsp'
        exec "!astyle --style=gnu --suffix=none %"
    elseif &filetype == 'xml'
        exec "!astyle --style=gnu --suffix=none %"
    else
        exec "normal gg=G"
        return
    endif
endfunc

上面astyle和autopep8参数的含义可以到相应网站查询,这里就不解释了。

Vim插件之vim-autoformat相关推荐

  1. vim插件man.vim

    用vim查看程序代码时,会经常碰到系统函数调用,对于它们的参数类型.参数个数.返回值,不管你信不信,反正我是记不住,这时man.vim就派上用场了. 安装manpages sudo apt-get i ...

  2. linux里vim插件',安装vim插件(linux下)

    安装vim插件(linux下) 第一步:安装zencoding插件(自动完成css html) unzip zencoding-vim.zip –d zencoding 第二步,安装autocompl ...

  3. vim 插件_你不得不知道的适用于程序员的VIM插件

    在介绍最常用和最受欢迎的Vim插件之前,让我们首先了解Vim的真正含义.基本上,Vim只是另一个文本编辑器,我们可以使用它来编写和编辑文本,就像通常在Windows或Mac上使用的Sublime Te ...

  4. bashsupport插件_如何用 bash-support 插件将 Vim 编辑器打造成编写 Bash 脚本的 IDE

    IDE(集成开发环境)就是这样一个软件,它为了最大化程序员生产效率,提供了很多编程所需的设施和组件. IDE 将所有开发工作集中到一个程序中,使得程序员可以编写.修改.编译.部署以及调试程序. 在这篇 ...

  5. java vim ide_把VIM配置成IDE开发环境 | 学步园

    VIM常用命令 VIM命令图 VIM键盘布局图 VIM键盘布局英文 VIM键盘布局中文 将VIM配置成IDE(通过 VIM基本插件 和VIM配置文件) Ubuntu14下我的VIM IDE配置的效果图 ...

  6. 【转】ubuntu 12.04 下 Vim 插件 YouCompleteMe 的安装

    原文网址:http://www.cnblogs.com/jostree/p/4137402.html 作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree ...

  7. 爱了!Intellij IDEA 自带的 Vim 插件真心不错

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:hsujee.com/2016/01/13/ 在 IDEA ...

  8. vim插件的安装方式 -- vim注释插件和doxygen函数注释生成插件-ctrlp插件-tabular等号对齐 插件...

    使用unzip的时候 指定 -d选项, 是说明解压到的 目标地址. 这个参数还是比较方便的, 比直接unzip到当前目录, 然后在去拷贝到目标目录, 然后再删除当前目录中的解压文件夹, 方便多了. 使 ...

  9. vim 插件_Vim自动生成tags插件vim-gutentag使用方法

    在常规的使用ctags生成tag标签文件实现跳转的方式下,每次需要更新tags文件时都需要手工运行 ctags -R 生成当前项目所有源文件对应的tag标签文件. 当工程文件多.文件更新频繁时,上述生 ...

  10. 管理Vim插件的插件——Vundle

    用 vundle 来管理 vim 插件 首先vundle 来管理vim 是潮流,并且方便快捷 它使用类似 Ruby Bundler 的方式来管理插件,你只需要在.vimrc里面用Bundle声明插件 ...

最新文章

  1. 转 微博 linux中ctime,mtime,atime的区别
  2. tomcat的jsp页面超过65535,导致500报错
  3. ansible1.7.2源码安装教程
  4. ironpython使用opencv_连这些都不知道,就别说自己懂Python!
  5. Hibernate框架 配置文件基本架构
  6. 大专学历造假改成了211, 拿到了抖音Offer
  7. MongoDB开发环境搭建(windows)
  8. 宽凳科技,这是前百度外卖董事长刘骏的新征途
  9. 熊猫merge()–合并两个DataFrame对象
  10. elk日志分析系统_ELK 日志分析系统
  11. 全国大学生计算机创新创意大赛,全国大学生先进成图技术与产品信息建模创新大赛...
  12. 邮件签名——html模板
  13. OpenWrt ar71xx 添加原生 AR8035 支持的方法 (AR934X)
  14. matlab gui gca,matlab和rest做GCA分析的不同
  15. ECDSA安全性证明
  16. date_sub的用法
  17. ASR语音转文字模型——项目落地
  18. MySQL查询7天内过生日的用户 查询生日是今天的用户 解决跨年问题
  19. 92_特殊方法(魔术方法)和运算符重载
  20. 爱普生墨仓式打印机故障检查,卡纸,清洗打印头,补充墨水详解(非常实用)

热门文章

  1. python音乐播放器
  2. 英特尔核显驱动hd630_AMD与英特尔彻底失去合作关系?中止Kaby Lake-G更新支持
  3. 微软官方网站下载 Visual Studio 2019 各版本
  4. b丅151组成的充电器电路_手机万能充电器电路原理与维修
  5. AdB android 投屏 usb,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...
  6. Jump Crypto:详解五大多链架构的特点与优劣势
  7. centos7安装后ping不通外网问题解决
  8. bat脚本,windown定时关机,取消定时关机,设置延长关机时间
  9. XML,HTTP协议
  10. 外包程序员的水平真的很垃圾吗?