在VIM下写C++能有多爽?

原创 2015年08月20日 13:53:48

我是坚定的Vim党,因为和命令行的集成如此之好,Vim可以解决任何问题。 然而在这个世界上,即便是最好用的工具也是需要配置的。本文就来打造一个适合写C++的Vim编辑器!

基础设置

稍微熟悉Vim的小伙伴都会知道这个文件~/.vimrc,如同绝大多数的Unix软件,Vim也是用基于文本的配置文件。 当前用户的Vim配置便存储在这个文件当中,该文件的每一行便是一个配置项(function除外)。

配置文件中的所有语句都会在打开Vim时,在Ex模式下执行。例如,我们在Vim中打开行号:

:set number

我们便可以在配置文件中加入:

" ~/.vim
set number

同样重要的配置还有:

  • 打开语法高亮:syntax on
  • Tab大小:set tabstop=4
  • 缩进大小:set shiftwidth=4

Vim是一个典型的Unix程序,上述命令都有缩写啦:number(nu), tabstop(ts), shiftwidth(sw), etc.

更多关于基础配置项的信息,请参考我的另一篇博客: vim 的配置与使用

自动补全

自动补全恐怕是代码编辑器最重要的特性了,我们暂且不提它毁了多少人的面试之路。

由于Vim插件的风格、使用方式太过多样化,多语言的自动补全一直存在各种冲突,需要大量精力才能调通。 然而Github的出现给Vim插件带来了新的活力,现在我们通过基于Github的Vundle来安装插件,而不需要手动去vim.ort上找插件了。

废话少说,我推荐的插件叫做YouCompleteMe,看图!

YouCompleteMe功能很全:

  • 自动补全,在你写一个名称的过程中,会出现提示列表,同时给出每一项的函数签名(函数形参列表)。
  • 语法错误、警告的提示。比如变量未使用、函数未定义等等,很多编译warning都会直接提示出来,特别神奇。

配置很容易,但需要先安装Vundlevundle(如果你没有的话)。另外,如果你是MacOS用户,确保你的Vim升级到了7.4. 如何使用HomeBrew本文就不唠叨了。

括号/引号匹配

括号和引号的自动补全和智能匹配。例如:

  • 输入前大括号补全后大括号
  • 在一对括号之间回车,自动分为3行并调整缩进
  • 输入前引号自动补全后引号

凡此种种。。。我觉的第二条是最实用的功能,尤其是写函数和类的时候。

上述的各种括号、引号匹配都可以用delimitMate来解决,官网:

https://github.com/Raimondi/delimitMate

下载后把autoloadplugindoc都拷贝到~/.vim/下即可。

Formatter

格式化程序对于我们懒人和强迫症用户来讲是非常需要的。Vim的默认配置中提供了格式化功能, 但显然我们要的更多!比如我希望:

  • 前大括号不换行,而后大括号换行
  • 所有运算符两边都有空格
  • 一键格式化当前文件
  • 保存时自动格式化
  • ...

这里推荐的插件叫做vim-autoformat,上述的需求都能完美地解决。参照文档安装就好了。

需要注意的是,vim-autoformat只是格式化程序框架,它依赖于代码风格检查工具来进行格式化。 我们需要单独安装这些工具:astyle、js-beautify等。这里有完整的列表:https://github.com/Chiel92/vim-autoformat#default-formatprograms。

如果你希望自定义代码风格,可以在.vimrc中添加个性化的formatter:

let g:formatdef_harttle = '"astyle --style=attach --pad-oper"'
let g:formatters_cpp = ['harttle']
let g:formatters_java = ['harttle']

比如我安装了astyle,这里定义一个formatter叫做harttle。然后,把它设置成cpp和java的formatter。 至于astyle --style=attach --pad-oper为什么这样写,这是一个Bash命令,这些参数你可以去查看Astyle 的文档。 来一个快捷键F3格式化当前文件:

" file: ~/.vimrc
noremap <F3> :Autoformat<CR>

看图!

注释

注释、反注释是代码编辑器的常用操作,我们也可以方便地在Vim中设置快捷键。 然而因为不同语言的注释风格不同,我们可能需要在ftplugin下写多个配置文件,总之很烦人。 可以引入一个称为NERD Commenter的插件:

https://github.com/scrooloose/nerdcommenter

这是一个在社区很火的插件,O(∩_∩)O~。下载后直接复制到~/.vim下面即可。 如果你希望看到它的文档,只需要更新VIM DOC:

:helptags ~/.vim/doc

此后,按下\cc即可注释,\cu反注释。前面可以加一个行数~

编译/运行

如果你已经能熟练地定义Vim快捷键,就不必往下看了。

下面三行分别设置了运行、编译、调试的快捷键,n表示该快捷键在normal模式下起作用; nore表示该定义不会递归地传递;<CR>是回车(carriage return),!表示执行Shell命令。

nnoremap <F5>   <Esc>:w<CR>:!g++ -std=c++11 % -o /tmp/a.out && /tmp/a.out<CR>
nnoremap <F7>   <Esc>:w<CR>:!g++ -std=c++11 %<CR>
nnoremap <C-F5> <Esc>:w<CR>:!g++ -std=c++11 -g % -o /tmp/a.out && gdb /tmp/a.out<CR>

当然,如果你把上述代码直接添加到~/.vimrc中,所有类型的文件都会拥有上述三个快捷键。 这可能是我们不希望的结果,我们希望每种文件类型的<F5>执行自己的运行命令。

这需要进行文件类型识别和定义文件类型插件,请参考我的另一篇文章:感受Vim的强大:进阶技巧

版权声明:本文为博主原创文章,转载请附上原文链接。

把vim打造成牛逼的C++ IDE

对于windows上做C++开发的用户来说,vs为他们做了大量的工作,语法高亮、自动缩进、智能提示等等,当你happy的使用vs时,请记住一点,这是一个收费软件,虽然在我大中华普遍都在使用微软的盗版软...
  • doc_sgl
  • doc_sgl
  • 2015年08月02日 11:49
  • 27073

vim使用—实现程序的自动补齐(C语言)

使用过Source Insight的人一定对它的自动补全功能印象深刻,在很多的集成开发环境中,也都支持自动补全。vim做为一个出色的编辑器,这样的功能当然少不了。至于如何实现程序自动补全,网上教程很多...
  • zqixiao_09
  • zqixiao_09
  • 2015年12月26日 23:11
  • 4391

在VIM下写C++能有多爽?

原文链接:http://blog.csdn.net/yangjvn/article/details/47806863 我是坚定的Vim党,因为和命令行的集成如此之好,Vim可以解决任何问题。 然...
  • pzhw520hchy
  • pzhw520hchy
  • 2017年12月03日 20:49
  • 18

用HR的思路写简历,你才能有面试!

 应聘简历是应聘者自带的个人介绍材料。简历的筛选,实际上并没有统一的标准来对应聘简历进行评估,大致分为五点。 (一)分析简历结构   简历的结构在很大程度上反映了应聘者的组织和沟...
  • job51BBS
  • job51BBS
  • 2017年06月26日 09:37
  • 211

很高兴能有时间来csdn写一些自己的心得

先自我介绍一下吧;我
  • jywzxf
  • jywzxf
  • 2014年06月08日 19:19
  • 108

在美国,信用到底能有多重要?

众所周知,美国社会对信用极为重视。日常生活中,小到在银行开个户、办一张普通的手机卡,大到买保险、贷款买房,都与消费者的个人信用记录休戚相关。完善成熟的个人信用体系使得守信用融入到日常生活中,成为习惯。...
  • zhangzning
  • zhangzning
  • 2017年06月29日 12:00
  • 64

程序员人生的出口(写的真不错,对程序员能有一个清晰的认识)

程序员的人生出口 很多人非常想知道自己的未来是什么样子的,迫切到一定程度甚至会找算命先生。如果并不是想得到一个精确结果,这事儿其实并没有想的那么难。程序员的人生看起来五花八门,可以是Window...
  • guonanjun
  • guonanjun
  • 2014年11月21日 17:32
  • 335

docker(8):使用alpinelinux 构建 golang http 看看能有多小

1,alpine linux 非常小首先 alpine 非常的小,安装上了bash 之后也才 5mb。 golang 不需要其他的依赖,想看看是不是能在 alpine 上面跑呢。 搭建一个gola...
  • freewebsys
  • freewebsys
  • 2016年12月13日 22:37
  • 3130

多牛逼,十几分钟你就能有个属于自己的网站

上一次用word press做自己的博客网站还是大二的时候,由于当时脑子里的知识实在有限,所以更新不是很频繁,导致第二年就没继续续费,网站的域名和空间都被服务商收回,算是告一段落。 多牛逼,十几分钟...
  • yimuqing123
  • yimuqing123
  • 2016年11月15日 19:48
  • 252

vim写c/c++的经验总结

vim的配置与使用经验
  • dong_beijing
  • dong_beijing
  • 2017年12月25日 14:33
  • 51
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在VIM下写C++能有多爽?
举报原因:
原因补充:

(最多只允许输入30个字)