centos下打造c++编程IDE环境

1.先安装ctags

yum install ctags

2.在home下设置一般用户的如下几个目录

[wm@adx ~]$ mkdir -p .vim/plugin
[wm@adx ~]$ mkdir -p .vim/doc
[wm@adx ~]$ mkdir -p .vim/tags
[wm@adx ~]$ mkdir -p .vim/syntax
3.创建一般用户的vimrc

[wm@adx ~]$ cp /etc/vimrc .vimrc


4.进入~/.vim/doc执行如下命令

[wm@adx ~/.vim/doc]$ wget http://ncu.dl.sourceforge.net/project/vimcdoc/vimcdoc/1.8.0/vimcdoc-1.8.0.tar.gz

[wm@adx ~/.vim/doc]$ tar zxvf vimcdoc-1.8.0.tar.gz 


5.生成工程文件下的tags,我这里采用在root下生成tags

[root@adx /home/wm/mbase]# ctags -R
[root@adx /home/wm/mbase]# ls
doc  Make.env  maketool    README.md
lib  Makefile  premake.sh  tags


6.先测试一下,vim进入源码,同时按下Ctrl+],可进行函数跳转

7.打造一个IDE的左侧导航函数列表样式,先下载TagList

[wm@adx ~/mbase/maketool]$ cd ~/.vim
[wm@adx ~/.vim]$ wget http://www.vim.org/scripts/download_script.php?src_id=19574
解压

[wm@adx ~/.vim]$ ls
doc  plugin  syntax  taglist_46.zip  tags
[wm@adx ~/.vim]$ unzip taglist_46.zip 
Archive:  taglist_46.zip
  inflating: plugin/taglist.vim      
  inflating: doc/taglist.txt  
编辑home里的~/.vimrc。并添加如下两行  

let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
最后vim进入一个.c源文件,并输入:TList,就可以看见左侧的导航目录了,一般的操作是同时按下Ctrl+w+(hjkl)来选择窗口,在左侧选择函数后,按回车键就能跳入到相对应的定义函数域中。

8.文件浏览器和窗口管理器的添加

[wm@adx ~/mbase/maketool]$ cd ~/.vim
[wm@adx ~/.vim]$ wget http://www.vim.org/scripts/download_script.php?src_id=754
解压

[wm@adx ~/.vim]$ unzip winmanager.zip 
Archive:  winmanager.zip
  inflating: plugin/winfileexplorer.vim  
  inflating: plugin/wintagexplorer.vim  
  inflating: plugin/winmanager.vim   
  inflating: doc/winmanager.txt 
编辑home里的~/.vimrc。并添加如下两行  

let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle
通过vim进入一个.c源文件,直接输入wm,就能预览

9.cscope的使用,用途类似ctags,但功能更强大,可实现任意跳转。

[wm@adx ~/.vim]$ wget http://nchc.dl.sourceforge.net/project/cscope/cscope/15.8a/cscope-15.8a.tar.gz
也是解压到.vim这个目录下,make install需要root权限

[wm@adx ~/.vim]$ tar zxvf cscope-15.8a.tar.gz 
[wm@adx ~/.vim]$ cd cscope-15.8a
[wm@adx ~/.vim/cscope-15.8a]$ ./configure
[wm@adx ~/.vim/cscope-15.8a]$ make
[root@adx /home/wm/.vim/cscope-15.8a]# make install
编辑

[wm@adx ~]$ vim .vimrc 

添加如下语句

:set cscopequickfix=s-,c-,d-,i-,t-,e-


跟Ctags一样, 要使用其功能必须先为你的代码生成一个cscope的数据库, 在项目的根目录运行下面的命令:

[wm@adx ~/mbase]$ cscope -Rbq
[wm@adx ~/mbase]$ ls
cscope.in.out  cscope.po.out  lib	Makefile  premake.sh  tags
cscope.out     doc	      Make.env	maketool  README.md
生成三个cscope文件

进入vim的一个.c源文件后,需要直接输入如下命令

:cs add /home/wm/mbase/cscope.out /home/wm/mbase


如果你要经常用cscope的话, 可以把上面那句加到~/.vimrc中去.


cscope的主要功能是通过同的子命令"find"来实现的
"cscope find"的用法:
cs find c|d|e|f|g|i|s|t name

0 或 s 查找本 C 符号(可以跳过注释)
1 或 g 查找本定义
2 或 d 查找本函数调用的函数
3 或 c 查找调用本函数的函数
4 或 t 查找本字符串
6 或 e 查找本 egrep 模式
7 或 f 查找本文件
8 或 i 查找包含本文件的文件

实例

查找fn函数,按下回车后会自动跳转到fn()的定义处. 

:cs find g fn


按下回车后vim会自动跳转到第一个符合要求的地方, 并且在命令栏显示有多少符合要求的结果。

:cs find c vim_strsave

如果自动跳转的位置你不满意, 想看其他的结果, 可以用下面的命令打开QuickFix窗口:


:cw


如果每次查找都要输入一长串命令的话还真是件讨人厌的事情, Cscope的帮助手册中推荐了一些快捷键的用法, 下面是其中一组, 也是我用的, 将下面的内容添加到~/.vimrc中, 并重启vim:

nmap s :cs find s =expand("")
nmap g :cs find g =expand("")
nmap c :cs find c =expand("")
nmap t :cs find t =expand("")
nmap e :cs find e =expand("")
nmap f :cs find f =expand("")
nmap i :cs find i ^=expand("")$
nmap d :cs find d =expand("")

当光标停在某个你要查找的词上时, 按下g, 就是查找该对象的定义, 其他的同理.
按这种组合键有一点技巧,按了后要马上按下一个键,否则屏幕一闪就回到nomal状态了
g的按法是先按"Ctrl+Shift+-", 然后很快再按"g"

10.快速浏览和操作Buffer -- 插件: MiniBufExplorer

[wm@adx ~/.vim]$ cd plugin/
[wm@adx ~/.vim/plugin]$ pwd
/home/wm/.vim/plugin
[wm@adx ~/.vim/plugin]$ wget http://www.vim.org/scripts/download_script.php?src_id=3640
--15:07:01--  http://www.vim.org/scripts/download_script.php?src_id=3640
Resolving www.vim.org... 216.34.181.97

可以通过vim打开多个源文件 vim file1 file2

可以通过快捷键切换标签buf,S是Shift键

向前循环切换到每个buffer名上
向后循环切换到每个buffer名上
在打开光标所在的buffer
d 删除光标所在的buffer

以下的两个功能需要在~/.vimrc中增加:
let g:miniBufExplMapCTabSwitchBufs = 1

向前循环切换到每个buffer上,并在当前窗口打开
向后循环切换到每个buffer上,并在当前窗口打开


11.c/h文件间相互切换 -- 插件: A

[wm@adx ~/.vim]$ cd plugin/
[wm@adx ~/.vim/plugin]$ pwd
/home/wm/.vim/plugin
[wm@adx ~/.vim/plugin]$ wget http://www.vim.org/scripts/download_script.php?src_id=7218
--15:29:57--  http://www.vim.org/scripts/download_script.php?src_id=7218

安装好a.vim后有下面的几个命令可以用了:

:A 在新Buffer中切换到c/h文件
:AS 横向分割窗口并打开c/h文件
:AV 纵向分割窗口并打开c/h文件
:AT 新建一个标签页并打开c/h文件


在~/.vimrc中增加了一句:

nnoremap   :A

意思是按F12时在一个新的buffer中打开c/h文件, 这样在写程序的时候就可以不假思索地在c/h文件间进行切换, 减少了按键的次数,

12.在工程中查找 -- 插件: Grep

[wm@adx ~/mbase/lib/mnl]$ cd ~/.vim/plugin/
[wm@adx ~/.vim/plugin]$ pwd
/home/wm/.vim/plugin
[wm@adx ~/.vim/plugin]$ wget http://www.vim.org/scripts/download_script.php?src_id=19966

下面介绍它的用法(摘抄):
vim有自己的查找功能, 但是跟shell中的grep比起来还是有些差距的, 有时Coding正火急火燎的时候, 真想按下F3, 对光标所在的词来个全工程范围的grep, 不用敲那些繁琐的命令, 现在福音来了, 跟我同样懒的人不在少数, 在grep.vim脚本的前部可以找到一些说明文档:
:Grep 按照指定的规则在指定的文件中查找
:Rgrep 同上, 但是是递归的grep
:GrepBuffer 在所有打开的缓冲区中查找
:Bgrep 同上
:GrepArgs 在vim的argument filenames (:args)中查找
:Fgrep 运行fgrep
:Rfgrep 运行递归的fgrep
:Egrep 运行egrep
:Regrep 运行递归的egrep
:Agrep 运行agrep
:Ragrep 运行递归的agrep

上面的命令是类似这样调用的:
:Grep   [] [ []]
:Rgrep  [] [ []]
:Fgrep  [] [ []]
:Rfgrep [] [ []]
:Egrep  [] [ []]
:Regrep [] [ []]
:Agrep  [] [ []]
:Ragrep [] [ []]
:GrepBuffer [] []
:Bgrep [] []
:GrepArgs [] []

在~/.vimrc中增加了一句:

nnoremap   :Grep


在最下面的命令行会显示:
Search for pattern: mb64_encodeblock此时你还可以编辑该行, grep支持正则表达式, 你想全词匹配的话可以改成:
Search for pattern: / 然后按下回车:


比如你想在/home/wm/mbase/lib/mnl/mb64.c中查找"mb64_encodeblock", 则将光标移到"mb64_encodeblock"上, 然后按下F3键, 如下图:


13.高亮的书签 -- 插件: VisualMark



14.自动补全

确保安装ctags5.6版本

在~/.vimrc中增加了一句:

filetype plugin indent on
打开文件类型检测, 加了这句才可以用智能补全
set completeopt=longest,menu

关掉智能补全时的预览窗口

打开一个.c源码

[wm@adx ~/mbase/lib/mnl]$ vim mb64.c

设置tags文件

:set tags=/home/wm/mbase/tags

然后按下"Ctrl+X Ctrl+O", 此时会弹出一个下列菜单, 显示所有匹配的标签, 如下图:

一些重要的快捷键

Ctrl+P 向前切换成员
Ctrl+N 向后切换成员
Ctrl+E 表示退出下拉窗口, 并退回到原来录入的文字
Ctrl+Y 表示退出下拉窗口, 并接受当前选项

新成员不能马上自动补全,需要重新生成一下tags文件即可。
vim中的其他补全方式还有:
Ctrl+X Ctrl+L 整行补全
Ctrl+X Ctrl+N 根据当前文件里关键字补全
Ctrl+X Ctrl+K 根据字典补全
Ctrl+X Ctrl+T 根据同义词字典补全
Ctrl+X Ctrl+I 根据头文件内关键字补全
Ctrl+X Ctrl+] 根据标签补全
Ctrl+X Ctrl+F 补全文件名
Ctrl+X Ctrl+D 补全宏定义
Ctrl+X Ctrl+V 补全vim命令
Ctrl+X Ctrl+U 用户自定义补全方式
Ctrl+X Ctrl+S 拼写建议

15. 自动补全功能,提示函数原形-- 插件: echofunc(已存在功能,不需要添加了)

[wm@adx mnl]$ cd ~/.vim/plugin/
[wm@adx plugin]$ wget http://www.vim.org/scripts/download_script.php?src_id=17383


编辑~/.vimrc添加一行

nmap  :!ctags -R --fields=+lS *

加入打开项目中的任意一个文件,按下F9产生tags文件,再导入tags(set tags=tags),当输入某一函数名再加(时,屏幕底端就会出现该函数的原型。


补充
    echofunc插件对库函数不起作用,如果想在输入库函数时也能显示函数原型,可以使用如下办法,或者在.vim文件夹下创建systags文件夹。
    (1)cd /usr/include
    (2) sudo ctags -R --fields=+lS
    (3)在.vimrc中加入set tags=/usr/include/tags


方法二

系统库函数名补全、原型预览等功能,相当于把tags文件产生到.vim文件夹下

[root@adx /home/wm/.vim]# ctags -I __THROW --file-scope=yes --langmap=c:+.h --languages=c,c++ --links=yes --c-kinds=+p --fields=+S  -R -f /home/wm/.vim/systags /usr/include /usr/local/include


~/.vimrc,加入一行:

set tags+=~/.vim/systags

15.加速你的补全 -- 插件: SuperTab

17.补充命令

直接指定一个tags后,就可以通过ctrl+]组合键进行跳转到定义了。同时按下ctrl+T回到刚才跳转位置处。

vim 7.0版本以上内置了自动补全,快捷键和omnicppcomplete一样。


都是ctrl+x ctrl+o(智能补全)
或ctrl + n
或ctrl+p ,
或是 ctrl+x ctrl+f(补全文件名)
ctrl+x是进入一种模式。


但是如果omnicppcomplete插件,是无法做到 输入 “."  “->"自动智能补全的。


stl的自动补全需要下载STL源码,然后会STL源码产生tags文件,然后把这个文件写到vimrc中就可以啦。
ctrl + ]只能进入有定义的函数,不能进入只有声明的函数。
确保已关闭了vi兼容模式,并允许进行文件类型检测:
 set nocp
 filetype plugin on
 生成标签文件
 ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
 在对C++文件进行补全时,OmniCppComplete插件需要tag文件中包含C++的额外信息,因此上面的ctags命令不同于以前我们所使用的,它专门为C++语言生成一些额外的信息,上述选项的含义如下:
      --c++-kinds=+p : 为C++文件增加函数原型的标签
      --fields=+iaS : 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
      --extra=+q : 为标签增加类修饰符。注意,如果没有此选项,将不能对类成员补全



你可能感兴趣的:(Linux)