MyException - 我的异常网
当前位置:我的异常网» C++ » 在VIM下写C++能有多爽

在VIM下写C++能有多爽

www.MyException.Cn  网友分享于:2015-08-21  浏览:0次
在VIM下写C++能有多爽?

我是坚定的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的强大:进阶技巧

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

文章评论

我是如何打败拖延症的
我是如何打败拖延症的
程序员必看的十大电影
程序员必看的十大电影
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
10个调试和排错的小建议
10个调试和排错的小建议
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
那些争议最大的编程观点
那些争议最大的编程观点
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员的鄙视链
程序员的鄙视链
总结2014中国互联网十大段子
总结2014中国互联网十大段子
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
代码女神横空出世
代码女神横空出世
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Java程序员必看电影
Java程序员必看电影
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
一个程序员的时间管理
一个程序员的时间管理
中美印日四国程序员比较
中美印日四国程序员比较
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
为什么程序员都是夜猫子
为什么程序员都是夜猫子
如何成为一名黑客
如何成为一名黑客
每天工作4小时的程序员
每天工作4小时的程序员
我的丈夫是个程序员
我的丈夫是个程序员
漫画:程序员的工作
漫画:程序员的工作
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
程序员都该阅读的书
程序员都该阅读的书
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
鲜为人知的编程真相
鲜为人知的编程真相
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有