由于本人日常的开发在Linux环境下,所以我选择了vim作为写代码的工具,但是 Source Insight 又是一款非常强大且好用的看代码工具,所以我不得不在Linux里装了一个Windows的虚拟机(wine版本的 Source Insight4.0 有bug QAQ)。
这使我看代码非常不方便,写代码用vim,那看代码能不能也用vim呢?
如果你还不会vim,请看我csdn写的这篇文章《vim的基本操作》
vim的界面十分简洁,就像一个记事本一样,那他能像 Source Insight 一样具备函数跳转,查看定义等功能吗?
答案是肯定的,vim非常强大,vim结合插件后就能实现 Source Insight 一样的功能,妈妈再也不用担心我装虚拟机和大型的IDE(最具代表性的VS)而卡死了:)
工欲善其事,必先利其器。说干就干,下面就是我用 vim+ctags+Taglist+NERDTree+SrcExpl 配置的自用vim编辑器,能够实现基本的查看变量函数名、查看目录、打开其他文件、跳转定义等。
先上图,嘻嘻^^
一、vim基本配置
首先,修改~/.vimrc文件的内容,让你的vim看起来不至于那么难用。
"----------display-----------set nu "行号syntax on "语法高亮set ruler "显示当前行和列set showcmd "显示部分命令set showmode "最后一行显示当前模式set match "显示括号匹配"----------display------------"----------input--------------set smartindent "自动缩进set expandtab "将tab转化为空格set smarttab "插入tab使用shiftwidthset shiftwidth=4"缩进列数为4"-----------input----------------"------------search---------------set hlsearch "搜索结果高亮显示set inccase "预览搜索结果set ignorecase "不区分大小写set smartcase "当有大写字母时区分大小写"------------search---------------"-----------encoding--------------set encoding=utf-8 "设置编码格式set fileencodings=utf-8,gb18030,gbk,gb2312,big5set termencoding=utf-8
二、ctags+Taglist
首先安装ctags,这是ubuntu自带的,可以使用以下命令安装
sudo apt-get install ctags
然后再安装Taglist,严格来说不能算安装软件,只需要去网站上下载taglist_46.zip压缩包,解压后移动到~/.vim目录下即可。
cd ~/Downloadswget https://www.vim.org/scripts/script.php?script_id=273 -O taglist_46.zipunzip taglist_46.zip
mkdir ~/.vim
mv ~/Downloads/doc ~/.vimmv ~/Downloads/plugin ~/.vim
安装好ctags和Taglist后,在源代码根目录下执行
ctags -R --c++-kinds=+p+l+x+c+d+e+f+g+m+n+s+t+u+v --fields=+liaS -extra=+q
执行完毕会生成tags文件
如果你觉得上面的代码太长,也可以执行
ctags -R *
不过,这个命令有个问题,成员变量没有包含在里面。所以可能有些对象的成员时无法跳转。
接下来修改~/.vimrc配置
"-------------ctags----------------:set tags+='/home/coppa/linux_kernel/tags' "换成自己生成的tags路径"-------------ctags----------------
"-------------taglist----------------let Tlist_Use_Left_Window=1 "vim左侧窗口显示Taglistlet Tlist_Exit_OnlyWindow=1 "Taglist是最后一个窗口是退出vimlet Tlist_WinWidth=20 "设置Taglist窗口宽度为20nmap :Tlist "设置快捷键打开Taglist"-------------taglist----------------
完成上述步骤后,用vim打开项目代码,按F2即可打开Taglist
效果如图所示。
Taglist使用方法:
打开/关闭Taglist:『F2』(快捷键)
移动窗口:『ctrl-w 』后按左方向键、『ctrl-w 』后按右方向键
跳转定义:『ctrl-] 』
返回跳转之前:『ctrl-t』
快速定位:左侧选中某变量名后按回车键
三、NERDTree
NERDTree是一款用来在Vim界面显示树形目录的文件管理器插件,可在vim操作界面进行文件打开、目录浏览操作!
安装方法和Taglist类似,先去网站上下载NERD_tree.zip
然后再解压到.vim文件夹中
cd ~/.vimwget https://www.vim.org/scripts/script.php?script_id=1658 -O NERD_tree.zipunzip NERD_tree.zip
修改~/.vimrc配置
"-------------NERDTree---------------let NERDTreeWinPos='right' "设置窗口在右侧nmap :NERDTree "设置快捷键F8打开let NERDTreeWinSize=16 "窗口大小为16"-------------NERDTree---------------
效果如图所示
NERDTree使用方法:
打开/关闭NERDTree:F8(快捷键)
移动窗口:『ctrl-w 』后按左方向键、『ctrl-w 』后按右方向键
选择文件’:方向键上下移动
打开文件或目录:回车键
返回上一层目录:选择‘up a dir’,按回车
四、SrcExpl
该插件就是可以进行搜索功能,如同SourceInsight的下面一栏
安装方法和上面类似,先去网站上下载SrcExpl-6.0.zip
解压
cd ~/.vimwget https://www.vim.org/scripts/script.php?script_id=2179 -O SrcExpl-6.0.zipunzip SrcExpl-6.0.zip
修改~/.vimrc配置
"------SourceExplore------nmap :SrcExplToggle "设置快捷键为F5let g:SrcExpl_winHeight=6 "高度为6let g:SrcExpl_refreshTime=100 "刷新时间100mslet g:SrcExpl_jumpKey='' "回车键跳转定义let g:SrcExpl_gobackKey='' "空格键返回let g:SrcExpl_pluginList=[ \'_Tag_List_', \'NERD_tree_', \'Source_Explorer' \] "避免插件冲突let g:SrcExpl_searchLocalDef=1 "搜索本地的定义let g:SrcExpl_isUpdateTags=0 "文件打开时不更新tagslet g:SrcExpl_updateTagsCmd='ctags \--sort=foldcase -R .' "用ctags的命令创建tagslet g:SrcExpl_updateTagsKey='' "更新tags的快捷键"------SourceExplore------
SrcExpl使用方法:
打开/关闭SrcExpl:F5(快捷键)
移动窗口:『ctrl-w 』后按上方向键、『ctrl-w 』后按下方向键
跳转定义:回车(快捷键)
返回跳转:空格键(快捷键)
最终效果
小技巧:如何快速关闭所有插件,只保留中间的窗口。执行vim命令即可
:only
代码补全,用vim自带的就可以了,也可以安装插件YouCompleteMe。vim自带的代码补全需要在一般模式下按ctrl-n
总结:
F2,F5,F8对应键盘上左,中,右的位置,即Taglist,SrcExpl,NERDTree
窗口之间的移动需要先按ctrl-w,再按方向键来选择。
如果你不想搞那么麻烦,只想拥有一个能用的vim写代码就行,那你只需配置vim的基本配置就可以满足日常的写代码需求。
当一个文件里面函数很多时如何方便的查看函数,配置Taglist你将如鱼得水!
如果你想多一点需求,比如在vim界面打开其他文件,那么你可以配置NERDTree
我最喜欢Source Insight下面那栏的预览界面,配置SrcExpl后你就可以在其他文件的函数定义中跳来跳去!