DIY VIM

一. 怎样安装、使用VIM
以下是网上的一些有关VIM资料,个人认为对了解VIM很有帮助:

1. 将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
http://www.cnblogs.com/zhangsf/archive/2013/06/13/3134409.html

2. 强大的vim配置文件,让编程更随意
http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html

3. vim ctags cscope 用法
http://blog.csdn.net/kang99827765/article/details/39430433

4. vim目录说明,plugin doc autoload等目录
http://www.cnblogs.com/chris-cp/p/4581593.html

5. Vim Vundle 插件管理器
http://www.cnblogs.com/zengjfgit/p/5371588.html

6. VIM+插件构建源码分析工具
http://blog.csdn.net/Oliverlyn/article/details/72868918

7. 手把手教你把Vim改装成一个IDE编程环境(图文)(全)
http://blog.juwanli.com/手把手教你把vim改装成一个ide编程环境图文全/

8. 跟我一起学习VIM - vim插件合集

http://blog.csdn.net/mergerly/article/details/51671890

9. map自定义快捷键

https://www.jianshu.com/p/8ae25a680ed7

10. vim插件地址:https://github.com/vim-scripts/

11. vim教程(vimscript,vim脚本语言):https://www.w3cschool.cn/vim/jtewmozt.html

二. VIM + GDB
1. 下载vim源代码
首先我们需要下载vim的源码。到vim主页下载当前最新的vim 7.2的源代码,假设我们把代码放到~/install/目录,文件名为vim-7.2.tar.bz2。

2. 下载vimgdb补丁
接下来,我们需要下载vimgdb补丁,下载页面在:
http://sourceforge.net/project/showfiles.php?group_id=111038&package_id=120238
在这里,选择vim 7.2的补丁,把它保存到~/install/vimgdb72-1.14.tar.gz。

3. 打补丁
运行下面的命令,解压源码文件,并打上补丁:
cd ~/install/
tar xjf vim-7.2.tar.bz2
tar xzf vimgdb72-1.14.tar.gz
patch -d vim72 --backup -p0 < vimgdb/vim72.diff

4. 定制vim的功能
缺省的vim配置已经适合大多数人,但有些时候你可能需要一些额外的功能,这时就需要自己定制一下vim。定制vim很简单,进入~/install/vim72/src文件,编辑Makefile文件。这是一个注释很好的文档,根据注释来选择:

如果你不想编译gvim,可以打开--disable-gui选项;
如果你想把perl, python, tcl, ruby等接口编译进来的话,打开相应的选项,例如,我打开了--enable-tclinterp选项;
如果你想在vim中使用cscope的话,打开--enable-cscope选项;
我们刚才打的vimgdb补丁,自动在Makefile中加入了--enable-gdb选项;
如果你希望在vim使用中文,使能--enable-multibyte和--enable-xim选项;
可以通过--with-features=XXX选项来选择所编译的vim特性集,缺省是--with-features=normal;
如果你没有root权限,可以把vim装在自己的home目录,这时需要打开prefix = $(HOME)选项;

编辑好此文件后,就可以编辑安装vim了。如果你需要更细致的定制vim,可以修改config.h文件,打开/关闭你想要的特性。
我的配置如下:

./configure --enable-gdb --enable-xim --enable-cscope --enable-multibyte --enable-perlinterp --enable-pythoninterp --enable-tclinterp --with-features=netbeans_intg --with-features=huge

执行configure后,会生成2个文件: ~/install/vim72/src/auto/config.h, ~/install/vim72/src/auto/config.mk。打开其中的config.h文件,可以看到相关的宏定义。

还有2个比较中的文件:~/install/vim72/src/Makefile, ~/install/vim72/src/feature.h。仔细阅读上述文件,对于配置、编译vim有更好的理解。

5. 编译安装
编译和安装vim非常简单,使用下面两个命令:
make CFLAGS="-O2 -D_FORTIFY_SOURCE=1"
sudo make install

缺少ncurses安装包,解决办法:
下载安装相应软件包
如果你的系统是RedHat系列:

  yum list|grep ncurses
  yum -y install ncurses-devel
  yum install ncurses-devel

如果你的系统是Ubuntu或Debian:

  apt-cache search ncurses
  apt-get install libncurses5-dev)

6. 安装vimgdb的runtime文件
运行下面的命令,解压vimgdb的runtime文件到你的~/.vim/目录:
cd ~/install/vimgdb/
tar zxvf vimgdb_runtime.tgz -C ~/ .vim/

现在启动vim,在vim中运行下面的命令以生成帮助文件索引:
:helptags ~/.vim/doc

现在,你可以使用":help vimgdb"命令查看vimgdb的帮助了。
至此,我们重新编译了vim,并为之打上了vimgdb补丁。

7. 在vim中使用gdb
在~/.vimrc中,添加gdbvim的设置,如下所示:

"-- gdbvim setting --
set previewheight=12          " set gdb window initial height
run macros/gdb_mappings.vim   " source key mappings listed in this document
set asm=0                     " don't show any assembly stuff
set gdbprg=/usr/bin/gdb       " set GDB invocation string (default 'gdb')

用vim打开文件,自动加载了gdb_mappings.vim脚本文件,此文件定义了vimgdb的快捷键。请仔细阅读该文件,便于调试程序,此处就不多叙述了。需着重提示的一点是gdb variables窗口,需要在vim的命令行下输入:bel 20vsplit gdb-variables,显示出窗口。

三. 索引文件生成的简要说明
1. 生成系统tags
ctags  --c++-kinds=+p --fields=+iaS --extra=+q -I __THROW -I __nonnull -R /usr/include/

2.快捷键
设置好了tags文件,在定位变量/函数的定义时,最常用的快捷键是:
Ctrl + ]
跳转到变量或函数的定义处,或者用命令
:ta name
而使用快捷组合键
Ctrl + o/t
返回到跳转前的位置。

另外,ctags不会生成局部变量的索引,不过可以使用gd组合键(对光标所在处的word进行快捷查找定位)来定位,也是相当快捷的

3. 生成cscope索引文件:
cscope -Rbq

Cscope只在第一次解析时扫描全部文件,以后再调用cscope,它只扫描那些改动过的文件,这大大提高了cscope生成索引的速度。
下表中列出了cscope的常用选项:
-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-k: 在生成索引文件时,不搜索/usr/include目录
-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用"-",表示由标准输入获得文件列表。
-Idir: 在-I选项指出的目录中查找头文件
-u: 扫描所有文件,重新生成交叉索引文件
-C: 在搜索时忽略大小写
-Ppath: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。

vim支持8种cscope的查询功能,如下:
s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找egrep模式,相当于egrep功能,但查找速度快多了
f: 查找并打开文件,类似vim的find功能
i: 查找包含本文件的文件

四. 如何为Android Kernel生成tags和cscope索引文件
在kernel目录下,若有scripts/tags.sh文件,则可通过make命令来生成kernel的tags和cscope索引文件。

tags.sh文件中有一段如下注释:
# Do not use full path if we do not use O=.. builds
# Use make O=. {tags|cscope}
# to force full paths for a non-O= build

意思是说:make tags 或 make cscope生成的是相对路径的索引文件,若加上"O=.",则生成绝对路径的索引文件,即:make O=. tags 或 make O=. cscope

五. 在VIM中,如何方便的使用复制粘贴
以下是介绍vim复制粘贴的相关资料,个人认为写的非常全面:
1. 解决vim中鼠标右键无法复制的问题
https://www.cnblogs.com/pengdonglin137/p/3485062.html

2. Vim 复制粘贴探秘
http://www.cnblogs.com/jianyungsun/archive/2011/03/19/1988855.html

3. vim常用复制粘贴命令
http://blog.csdn.net/hk2291976/article/details/42196559

4. .vimrc中的设置
"--系统剪贴板
vmap <C-c> "+y  " 复制到系统剪贴板

vmap <C-v> "+gp " 粘贴并且移动光标到粘贴内容后

六、ctags指定文件解析
最近使用VIM+ctags编写代码,ctags 默认的把很多文件加入进去,导致tags文件很大包含很多无用的东西。
可以首先把需要tag的文件用find找出来,放到一个文件里面。然后再用ctags命令解析。
    src$ find . -name "*.h" -o -name "*.asm" -o -name "*.cpp" > data.txt  
然后再用
    src$ ctags -L -< data.txt  
关键参数为-L,指定读取filelist中的文件来生成索引即可.
再使用
    src$ cscope -bkq -i data.txt  

生成cscope文件即可。

例如:

假设当前目录为android根目录,生成系统函数的头文件索引,可参考使用如下命令:

find ./bionic/libc/include -name "*.h" -o -name "*.c" >> data.txt

find ./system/core/include -name "*.h" -o -name "*.c" >> data.txt


猜你喜欢

转载自blog.csdn.net/zhouxiangbai/article/details/54728534
Vim