vim+ctags+cscope安装与使用总结(不断补充中)

ctags

 

1、安装ctags

1) sudo apt-get install ctags  或者

2) 在http://ctags.sourceforge.net/ 下载源代码包之后,解压缩生成源代码目录

进入源代码目录执行./configure & make & make install

 

2、vim中ctags简单使用

详细的使用ctags用法,在vim中使用:help tags

1)生成tags文件

在源码根目录下执行ctags -R命令来为程序源代码生成标签文件,其-R选项表示递归操作,同时为子目录也生成标签文件,vim利用生成的标签文件,可以进行检索,并在不同的文件、元素之间来回切换。

也可以用ctags file_name1.c filename2.c filename3.h来产生ctags文件或者ctags *.c *.h

 

在创建ctags的时候排除某些目录

ctags -R --exclude=pattern

ctags -R --exclude=hifi4_framework/*

或者将所有需要排除的目录都写在一个文件exclude_file里,然后ctags -R --exclude=@exclude_file
 

 

2)字段补全

为了使得字段补全有效,在生成tags时需要一些额外的参数,推荐的c++参数主要是:
ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
其中:
选项c++-kinds 用于指定C++语言的 tags记录类型,  --c-kinds用于指定c语言的,  通用格式是  --{language}-kinds
选项 fileds 用于指定每条标记的扩展字段域
extra 选项用于增加额外的条目:   f表示为每个文件增加一个条目,  q为每个类增加一个条目

 

3)指定tags文件位置

可以手动指定tags文件

a)在vim命令行中输入或者修改.vimrc文件 set tags=./tags(当前路径下的tags文件)

如果要引用多个不同目录的tags文件,可以用逗号隔开,set tags=path1, path2...,或者

set tags+=path

set tags+=path

b)如果经常在不同工程里查阅代码,那么可以在~/.vimrc中添加:

set tags=tags;

set autochdir

第一个命令里的分号是必不可少的,这个命令让vim首先在当前目录里寻找tags文件,如果没有找到tags文件,就到父目录中查找,一直向上递归。因为tags文件中记录的路径总是相对于tags文件所在的路径,所以要使用第二个设置项来改变vim的当前目录。

 

4)跳转到指定函数

在变量或函数处 ctrl+] 来跳转到变量或者函数定义的地方。ctrl+t返回到跳转前的位置。

或者使用命令:tag func_nameshi 来跳转到变量或者函数定义的地方。

ctags不会生成局部变量的索引。

:tags会列出查找/跳转过程

 

3、ctags的局限性

tags文件只能查看函数,类或变量的定义,而没有被调用信息。

如果要知道一个函数在什么地方被使用,需要使用cscope工具。

添加的tags最好是source code的索引,对于include头文件索引没有效果,

 

 

 

taglist

 

taglist插件是以vim脚本的形式存在,因此只需要将其下载下来放到相应的目录即可。

taglist基于ctags才能发挥作用,因此要确保安装了ctags。

通过在vim命令行下运行help taglist.txt查询taglist的用法。

其英文原版手册:http://vim-taglist.sourceforge.net/manual.html

 

1、安装taglist

1)从http://vim-taglist.sourceforge.net/index.html 下载taglist安装包。

2)进入~/.vim目录,将taglist安装包解压,将解压后的/doc和/plugin目录复制到.vim目录下

3)进入~/.vim/doc目录,在vim下运行helptag .命令。这个步骤是将doc下的帮助文档加入到vim的帮助主题中,这样我们就可以通过在vim中运行help taglist.txt查看taglist帮助。

4)打开配置文件~/.vimrc,加入以下两行:

       let Tlist_Show_One_File=1
       let Tlist_Exit_OnlyWindow=1

到此安装已经完成。

在vim命令行下运行:Tlist(:TlistOpen, :TlistToggle)打开Taglist窗口,

运行:Tlist(:TlistClose, :TlistToggle)关闭Taglist窗口,

vim+ctags+cscope安装与使用总结(不断补充中)_第1张图片

我们可以通过ctrl+w快捷键或者鼠标点击在Taglist窗口和编辑区之间切换焦点,在Taglist窗口用鼠标选择某个符号并点击或者用键盘选择某个符号并回车,就可以跳转到该符号定义的位置。

 

2、其他一些选项可在~/.vimrc脚本中添加。如:

 

"设置ctags路径
let Tlist_Ctags_Cmd = '/usr/bin/ctags'

"启动vim后自动打开taglist窗口
let Tlist_Auto_Open = 1

"不同时显示多个文件的tag,仅显示一个
let Tlist_Show_One_File = 1

"taglist为最后一个窗口时,退出vim
let Tlist_Exit_OnlyWindow = 1

"taglist窗口显示在右侧,缺省为左侧
let Tlist_Use_Right_Window =1

"设置taglist窗口大小
"let Tlist_WinHeight = 100
let Tlist_WinWidth = 40

"设置taglist打开关闭的快捷键F8
noremap :TlistToggle

"更新ctags标签文件快捷键设置
noremap :!ctags -R

 

 

 

NERDTree

 

1、下载地址:http://www.vim.org/scripts/script.php?script_id=1658

2、解压得到doc/,nerdtree_plugin/,plugin/,syntax/

将后面3个文件夹的xxx.vim结尾的插件复制到./vim/plugin/目录下,并chmod a+x权限,

将doc/目录下的NERD_tree.txt复制到./vim/doc目录下并在当前目录下执行vim,在vim命令行中:helptags .,这样以后就能在vim中通过:help NERD_tree.txt来查看对应的帮助文档。

现在已经可以通过:NERDTreeToggle来在vim中显示文件列表,只不过现在文件列表栏显示在左边,需要修改配置。

3、配置

在./vimrc内容中添加

let NERDTreeWinPos='right'

noremap :NERDTreeToggle

这样以后在vim中直接按F9就能在右边显示文件列表栏了。

4、知识

现在NERDTree好像不支持搜索文件的功能,只能一个一个找,如果要使vim支持搜索文件还要装对应的插件。

 

 

 

cscope

 

1、安装cscope

sudo apt-get install cscope

 

2、知识点

1) 生成索引文件cscope -Rbq则生成cscope.in.out cscope.out cscope.po.out三个文件

1) :cs add path/cscope.out 添加索引文件的位置

2)

:cs find c function  查看function被调用的位置

:cs find s 查找本c符号

:cs find g 查找本定义

:cs find d 查找本函数调用的函数

:cs find t 查找本字符串

:cs find f 查找本文件

:cs find i 查找包含本文件的文件

 

3)在~/.vimrc中添加set cscopequickfix=s-,c-,d-,i-,t-,e-

这样通过:cs find xxx查找某个符号后,会立即跳转到第一个找到该符号出现的位置,

然后可以通过:copen来打开quickfix窗口,在quickfix窗口中显示所有出现的位置。


Cscope的使用(领略Vim + Cscope的强大魅力)

 

 

 

vim

 

1、高亮所有搜索模式匹配

shift + * 向后搜索光标所在位置的单词

shift + # 向前搜索光标所在位置的单词

n和N可以继续向后或者向前搜索匹配的字符串

 

:set hlsearch  高亮所有匹配的字符串

:nohlsearch 临时关闭

:set nohlsearch 彻底关闭,只有重新:set hlsearch才可以高亮搜索

 

vim高亮显示光标所在的单词,在单词的地方输入gd

 

2、语法高亮

syntax on

syntax off

 

3、vimgrep

vimgrep /匹配模式/[g][j] 要搜索的文件/范围

g: 表示是否把每一行的多个匹配结果都加入

j: 表示是否搜索完后定位到第一个匹配的位置

vimgrep /pattern/%  在当前打开文件中查找

vimgrep /pattern/ *   在当前目录下查找所有

vimgrep /pattern/ **   在当前目录及其子目录下查找所有

vimgrep /pattern/ *.c  查找当前目录下所有的.c文件

vimgrep /pattern/ **/*  只查找子目录

 

cn    查找下一个

cp    查找上一个

copen  打开quickfix

cw         打开quickfix

cclose  关闭quickfix

help vimgrep   查看vimgrep帮助

 

通过:vimgrep /pattern/gj path来查找字符串,最好将右边的文件列表显示栏关闭,这样quickfix窗口显示比较方便查看。

 

4、修改了配置文件.vimrc并保存后,如果希望不重启vim而让配置立即生效,可以在打开的vim中执行:source ~HOME/.vimrc

 

5、vim颜色配置方案

highlight 可以查看具体的颜色配置

highlight LineNr term=underline,bold ctermfg=3 guifg=Brown

 

Set colorcolumn=80 设置边界线为80列

Set colorcolumn=0 取消边界线设置

Highlight colorcolumn ctermbg=4 guibg=Blue

:help cterm-colors可以查看颜色对应的值

 

6、vim打开多个文件

vim file1 file2 file3 file4

或者进入vim后使用:e文档名来打开文档

 

:n 跳到后面那个文件

:N 跳到前面那个文件

:files查看打开了哪些文件

:file 查看当前的文件名

 

7、vim自动补全

ctrl + n或者ctrl + p

 

http://jingyan.baidu.com/article/76a7e409b5d525fc3b6e15fc.html

 

8、复制vim文件中所有内容

 

gg 回到文件首

shift + v 进入VISUAL LINE模式

shift + g 全选所有内容

ctrl + insert 复制所选的内容

 

9、[[跳到函数头部,]]跳到函数尾部

10、quickfix是vim的标准插件,本身就带有

 

quickfix功能将编译过程中产生的错误信息保存到文件中,然后vim利用这些信息跳转到源文件的对应位置,我们就可以进行错误的修正,之后跳到下一个错误重复上述操作,从而极大地提高编译错误的修改效率

 

quick常用命令:

 

:cc 显示详细错误信息

:cp 跳到上一个错误

:cn 跳到下一个错误

:cl 列出所有的错误

:copen 打开quickfix窗口,可以在后面添加窗口高度参数,如10行,:copen 10

:cclose 关闭quickfix窗口

 

11、按v进入可视化界面,然后通过左右键选择文本,再按y进行复制,p就可以进行粘帖了

 

12、不退出vim,直接在vim中执行":!gcc file.c -o file"就可以编译程序了

 

13、vim中查找特地字符串

/pattern enter

n 朝同一个方向搜索

N 朝反方向搜索

 

/ pattern  enter

要查找单个单词,键入该单词,并在这个单词的两边都加上空格

 

/^pattern enter

要查找仅出现在行首的单词,请在该单词前面加上^

 

/pattern$ enter

要查找仅出现在行末的单词,请在该单词的后面加上$

 

如果要把^和$当作普通的符号,就需要在前面加上\

 

14、vim自动缩进tab空格数设置为4

set smartindent
set tabstop=4
set shiftwidth=4
set softtabstop=4

tab表示一个tab显示出来是多少个空格的长度,默认8

softtabstop表示在编辑模式的时候按退格键的时候退回缩进的长度

shiftwidth表示每一级缩进的长度

15、vim的recording功能

第一步:在正常模式下(非insert模式、非visual模式)按下q键盘

第二步:选择a-z或0-9中任意一个作为缓冲器的名字,准备开始录制宏

第三步:正常的操作,此次所有的操作都会被记录在上一步中定义的缓冲器中

第四步:在非insert模式下输入q停止宏的录制

第五步:使用@ + 第二步中定义的缓冲器的名字即可就可以使用录制的命令了。

 

 

 

16、vim快捷键

g + ] 可以查看当前函数的所有位置的定义

ctrl + p 可自动补全

q: 显示vim命令历史

 

17、块选择

v 会将光标经过的地方反白选择

y将反白的地方复制

d将反白的地方删除

 

18、字符串替换

语法:[addr]s/源字符串/目的字符串/option

option(g表示全局替换,c表示替换前进行确认)

如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义

 

全局替换,`:%s/源字符串/目的字符串/g`

从当前行到文件尾替换,`:.,$%s/源字符串/目的字符串/g`

从第n行到文件尾替换,`:n,$%s/源字符串/目的字符串/g`

 

可以使用#或者+作为分隔符

:s#jishu/#yiliu/#  替换当前行第一个 jishu/ 为 yiliu/

:%s+/www/apras/+/web/apras1+ (使用+ 来替换 / ): /www/apras/替换成/web/apras1/

使用上面两种分隔符时,中间出现的/不会作为分隔符。

你可能感兴趣的:(ubuntu系统)