Vim插件之vim-autoformat
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相关推荐
- vim插件man.vim
用vim查看程序代码时,会经常碰到系统函数调用,对于它们的参数类型.参数个数.返回值,不管你信不信,反正我是记不住,这时man.vim就派上用场了. 安装manpages sudo apt-get i ...
- linux里vim插件',安装vim插件(linux下)
安装vim插件(linux下) 第一步:安装zencoding插件(自动完成css html) unzip zencoding-vim.zip –d zencoding 第二步,安装autocompl ...
- vim 插件_你不得不知道的适用于程序员的VIM插件
在介绍最常用和最受欢迎的Vim插件之前,让我们首先了解Vim的真正含义.基本上,Vim只是另一个文本编辑器,我们可以使用它来编写和编辑文本,就像通常在Windows或Mac上使用的Sublime Te ...
- bashsupport插件_如何用 bash-support 插件将 Vim 编辑器打造成编写 Bash 脚本的 IDE
IDE(集成开发环境)就是这样一个软件,它为了最大化程序员生产效率,提供了很多编程所需的设施和组件. IDE 将所有开发工作集中到一个程序中,使得程序员可以编写.修改.编译.部署以及调试程序. 在这篇 ...
- java vim ide_把VIM配置成IDE开发环境 | 学步园
VIM常用命令 VIM命令图 VIM键盘布局图 VIM键盘布局英文 VIM键盘布局中文 将VIM配置成IDE(通过 VIM基本插件 和VIM配置文件) Ubuntu14下我的VIM IDE配置的效果图 ...
- 【转】ubuntu 12.04 下 Vim 插件 YouCompleteMe 的安装
原文网址:http://www.cnblogs.com/jostree/p/4137402.html 作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree ...
- 爱了!Intellij IDEA 自带的 Vim 插件真心不错
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:hsujee.com/2016/01/13/ 在 IDEA ...
- vim插件的安装方式 -- vim注释插件和doxygen函数注释生成插件-ctrlp插件-tabular等号对齐 插件...
使用unzip的时候 指定 -d选项, 是说明解压到的 目标地址. 这个参数还是比较方便的, 比直接unzip到当前目录, 然后在去拷贝到目标目录, 然后再删除当前目录中的解压文件夹, 方便多了. 使 ...
- vim 插件_Vim自动生成tags插件vim-gutentag使用方法
在常规的使用ctags生成tag标签文件实现跳转的方式下,每次需要更新tags文件时都需要手工运行 ctags -R 生成当前项目所有源文件对应的tag标签文件. 当工程文件多.文件更新频繁时,上述生 ...
- 管理Vim插件的插件——Vundle
用 vundle 来管理 vim 插件 首先vundle 来管理vim 是潮流,并且方便快捷 它使用类似 Ruby Bundler 的方式来管理插件,你只需要在.vimrc里面用Bundle声明插件 ...
最新文章
- 转 微博 linux中ctime,mtime,atime的区别
- tomcat的jsp页面超过65535,导致500报错
- ansible1.7.2源码安装教程
- ironpython使用opencv_连这些都不知道,就别说自己懂Python!
- Hibernate框架 配置文件基本架构
- 大专学历造假改成了211, 拿到了抖音Offer
- MongoDB开发环境搭建(windows)
- 宽凳科技,这是前百度外卖董事长刘骏的新征途
- 熊猫merge()–合并两个DataFrame对象
- elk日志分析系统_ELK 日志分析系统
- 全国大学生计算机创新创意大赛,全国大学生先进成图技术与产品信息建模创新大赛...
- 邮件签名——html模板
- OpenWrt ar71xx 添加原生 AR8035 支持的方法 (AR934X)
- matlab gui gca,matlab和rest做GCA分析的不同
- ECDSA安全性证明
- date_sub的用法
- ASR语音转文字模型——项目落地
- MySQL查询7天内过生日的用户 查询生日是今天的用户 解决跨年问题
- 92_特殊方法(魔术方法)和运算符重载
- 爱普生墨仓式打印机故障检查,卡纸,清洗打印头,补充墨水详解(非常实用)
热门文章
- python音乐播放器
- 英特尔核显驱动hd630_AMD与英特尔彻底失去合作关系?中止Kaby Lake-G更新支持
- 微软官方网站下载 Visual Studio 2019 各版本
- b丅151组成的充电器电路_手机万能充电器电路原理与维修
- AdB android 投屏 usb,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...
- Jump Crypto:详解五大多链架构的特点与优劣势
- centos7安装后ping不通外网问题解决
- bat脚本,windown定时关机,取消定时关机,设置延长关机时间
- XML,HTTP协议
- 外包程序员的水平真的很垃圾吗?