日期:2014-05-16  浏览次数:20732 次

把vim打造成IDE(整理,修订)
今天用vim的时候,遇到了点原来一直没发现的问题,搞了半天也没搞定,没办法,只要重新弄了下vim……
记录一下搞vim的过程(vim是谁?额,我面壁……),顺便也跟大家分享一下:
(本文主要是针对如何高效的使用vim进行编程,对一般的vim命令和文本操作不会介绍)
本文是在以下链接的基础之上,进行了部分删减,补充,细化,并加入了新的功能,并非是完全的转载,所以,如转载本文,请注明……
本文主要引用了:
http://blog.csdn.net/wooin/article/details/1858917
http://timothyqiu.com/2011/using-omnicomplete-for-c-cplusplus-in-vim/
由于本文并非完全抄袭,所以如阅读本文时出现问题,建议阅读以上链接,也许会得到更多的启发……
本文会将与以上链接中不同的地方,以这种颜色表示,方便大家阅读和比对……
———————————————————————————————————————————————————

纯净的vim:(看看什么设置都没有的情况下,我们的vim是什么样的)
vim --version: “VIM - Vi IMproved 7.3”,说明的vim是7.3版本,推荐安装7.2以上版本,否则本文可能不适用……
其实并不是什么插件都没有,输入:scriptnames,我们会看到,其实vim在安装的时候,已经默认安装了很多插件……
———————————————————————————————————————————————————

原生的功能:(这些功能不需要任何设置和插件)

1、% 跳转到配对的括号(小括号,方括号,大括号都在次范围),一般用于查看if,while的范围

2、万能的方括号:方括号主要是用于在匹配的相互符号(一般是括号)之间移动
[( 表示将光标移动到匹配的左括号,“])”表示将光标移动到匹配的右括号,同理,如果将小括号变成大括号,就不用我解释了吧?
[/ 表示在注释之间移动
[# 表示在编译预处理之间移动(不太常用)
[[ 表示回到当前函数最开始的左大括号,这个东西和[+{的区别是,[[肯定是回到函数的左大括号,而[{则有可能移动光标到while或者switch的左大括号……
[i i表示identifer,当你看到一个变量却不知道变量类型的时候,就用它看变量的声明(函数也可以)。i还可以大写哦,i大写以后还可以[+tab哦,另外,还可以直接先“[”然后ctrl+i哦,功能很强大,自己去点点看啦……
[d d表示define,当你想看看某个宏名究竟怎么定义的时候,就用它啦,同样d可以大写……

3、找定义:
gd 表示goto defination,查找变量或者函数的定义就用它啦,和[i类似,具体区别自己体验一下便知
gD 小写表示函数内查找,大写表示全局查找(其实只能在一个文件内部,并不是真正的全局)

4、返回光标:
‘’ 是两个单引号,不是双引号,当你用上面的命令找一些东西的时候,有时光标就跑了,这个命令就是让光标赶快“回家”,也就是回到你查看之前的位置,以便继续写程序……

5、缩进:
>>和<< 和c++的输入输出流用的符号一样,这个缩进或者反缩进的量由shiftwidth控制,默认是8个空格。一般来说,这个功能都会和v命令一起用,以实现整块缩进,当和v一起使用的时候,只需要>和<即可,也就是只输入一次

6、多行注释
谁说vi不能多行注释,ctrl+v,选好行以后,I(大写很重要),然后//,然后两次ESC,搞定,神奇吧?删除还用我教你嘛?ctrl+v,记得选两列哦,然后d一下,搞定……

7、格式对齐
vim一样可以把混乱的格式排列整齐,只要输入“gg=G”,就万事OK啦……
———————————————————————————————————————————————————
(裸奔的vi就已经如此强大了,接下来看看简单的设置一下,有什么结果吧)

简单的全局设置

set number "显示行号
set nowrap "不自动换行,默认是自动换行的
set tabstop=4 " TAB键所表示的空格数(这个值只能管tab,不管缩进)
set shiftwidth=4 " 缩进所表示的空格数(不同于TAB,是利用>>缩进的大小,自动缩进也看这个值)
set autoindent " 智能自动缩进(这个东西实际用处不大,因为只是针对简单文本的)
filetype plugin indent on " 让filetype-plugin根据文件类型自动缩进(这个必须要,它会根据文件类型自动配置缩进,插件在安装vim的时候已经装好了)
set hlsearch " 对被搜索的表达式显示高亮
set incsearch "在输入要搜索的文字时,实时匹配
nmap <f2> :noh<cr>
imap <f2> <esc><f2>a
将F2设置为清除屏幕高亮,上面两行分别定义了在insert和command模式下两种情况

syntax enable和syntax on表示设置语法高亮,也就是根据文件类型的不同,对程序进行着色,实际上vim默认已经开启这个选项了,如果没开启,可以添加上面两句,手动开启
colorscheme desert  " 自定义颜色方案(:help syntax.txt),系统自带的方案很多,也可以自己去google一下,自定义方案。其实系统默认配色也说的过去,这个选项就算是彩蛋吧……
———————————————————————————————————————————————————
(至此,一个更加人性化的界面和操作诞生了,接下来的事情就需要插件了,如果再自己写配置,会死人的)

加入ctags功能

1、基本的ctags功能:
想方设法去安装ctags,make还是yum随意,安装完毕以后,在你的程序根目录执行:ctags -R命令即可,则会在根目录产生一个叫做tags的文件,然后进入源代码,至此OK。很多教程都会告诉你要:set tags=#@¥%,其实完全没必要,对于tags文件,vim是自动加载的,并且如果你手动更新过tags的话,vim也完全没有必要重新关闭打开一遍,他会自动按照更新的内容进行查找,高级吧?
其实,仅仅ctags并没有太大的功能改善,它比vim原生的功能唯一强大的地方就在于是跨文件查找而已,其他的其实没什么,另外,还有一点不方便的,就是如果你不手动ctags -R,那么它永远不会自