打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
vim插件管理
Vim插件管理
一、安装vim
Ubuntu安装vim:
sudo apt-get install vim vim-scripts vim-doc
说明:中文支持的方法:
在下面的网站下载中文帮助的文件包:
http://vimcdoc.sf.net       (English)
http://vcd.gro.clinux.org    (中文)
下载的文件包应该是类似这样的: vimcdoc-1.8.0.tar.gz
解压后其中有个doc文件夹, 将其中的内容全部复制到~/.vim/doc, 或者vim安装目录下(/usr/share/vim)的doc目录中, 此时vim中的help信息已经是中文的了.
注意:
a.       如果无法显示中文, 在~/.vimrc中增加下面这句试试:
set helplang=cn
b.      帮助文件的文本是utf-8编码的, 如果想用vim直接查看, 需要在~/.vimrc中设置:
set encoding=utf-8
二、语法高亮
在~/.vimrc 文件中增加下面几句话:
syntax enable
syntax on
再重新启动vim, 并打开一个c程序文件即可。如果你不喜欢这个配色方案你可以在"编辑->配色方案"(gvim)中选择一个你满意的配色方案, 然后在~/.vimrc文件中增加下面这句:
colorscheme desert
如果菜单中的配色方案你还不满意, 在 vim.org 上跟你一样的人很多,他们做了各种各样的颜色主题,你可以下载下来一个一个的试, 多地可以看到你眼花。如果这样你还不满意(你还真是XXXX),没关系,vim的作者早想到会有你这种人了。你可以创建你自己的颜色主题:
:help syntax.txt
更炫的语法高亮:
你可能会发现很多东西没有高亮起来,比如运算符号,各种括号,函数名,自定义类型等。操作方法如下:
主要的思路是新建一个语法文件, 在文件中定义你要高亮的部分, 想高亮什么就高亮什么, 用vim就是这么自信。所谓的语法文件就是vim用来高亮各种源文件的一个脚本, vim靠这个脚本的描述来使文件中的不同文本显示不同的颜色, 比如C语言的语法文件放在类似于这样的一个路径中:/usr/share/vim/vim72/syntax/c.vim
其他语言的语法文件也可以在这个路径中找到, 你的也许不在这个路径中, 不管它, 在你自己的HOME下新建一个语法文件, 新建一个空文件:~/.vim/syntax/c.vim
在其中加入
"========================================================
" Highlight All Function
"========================================================
syn match   cFunction "/<[a-zA-Z_][a-zA-Z_0-9]*/>[^()]*)("me=e-2
syn match   cFunction "/<[a-zA-Z_][a-zA-Z_0-9]*/>/s*("me=e-1
hi cFunction        gui=NONE guifg=#B5A1FF
"========================================================
" Highlight All Math Operator
"========================================================
" C math operators
syn match       cMathOperator     display "[-+/*/%=]"
" C pointer operators
syn match       cPointerOperator  display "->/|/."
" C logical   operators - boolean results
syn match       cLogicalOperator  display "[!<>]=/="
syn match       cLogicalOperator  display "=="
" C bit operators
syn match       cBinaryOperator   display "/(&/||/|/^/|<</|>>/)=/="
syn match       cBinaryOperator   display "/~"
syn match       cBinaryOperatorError display "/~="
" More C logical operators - highlight in preference to binary
syn match       cLogicalOperator  display "&&/|||"
syn match       cLogicalOperatorError display "/(&&/|||/)="
" Math Operator
hi cMathOperator            guifg=#3EFFE2
hi cPointerOperator         guifg=#3EFFE2
hi cLogicalOperator         guifg=#3EFFE2
hi cBinaryOperator          guifg=#3EFFE2
hi cBinaryOperatorError     guifg=#3EFFE2
hi cLogicalOperator         guifg=#3EFFE2
hi cLogicalOperatorError    guifg=#3EFFE2
再打开你的C文件看看,许多高亮符号。 如果你自己增加了一个类型或者结构之类的, 怎么让它也象"int", "void"这样高亮起来呢? 再在上面的文件~/.vim/syntax/c.vim中添加下面的内容:
"========================================================
" My Own DataType
"========================================================
syn keyword cType       My_Type_1 My_Type_2 My_Type_3
这样你自己的类型My_Type_1,My_Type_2,My_Type_3就也可以向"int"一样高亮起来了,这样的缺点是每增加一个类型,就要手动在这里添加一下。
三、Ctags
ctags可以建立源码树的标签索引(标签就是一个标识符被定义的地方,如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形。以下是在ubuntu下ctags的下载安装和配置过程:
1、下载并安装ctags
sudo apt-get install ctags
2、建立源码索引
比如我经常需要查阅Linux的内核代码,而这些代码放在/home/lqb/arm/linux-2.6.24.7目录下那么在终端进入到该目录后,输入命令
ctags -R *
你会发现多了一个tags文件,这个就是索引文件。
3、注册索引文件tags的路径
vi ~/.vimrc
在打开文件的最后添加如下内容(当然,具体路径根据你自己的情况)
"--ctags setting--
" 按下F5重新生成tag文件,并更新taglist
map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
imap <F5> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
set tags=tags
set tags+=./tags "add current directory's generated tags file
set tags+=~/arm/linux-2.6.24.7/tags "add new tags file
在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件)set tags+=./tags表示在当前工作目录下搜索tags文件。
set tags+=~/arm/linux-2.6.24.7/tags表示在搜寻tags文件的时候,也要搜寻~/arm/linux-2.6.24.7/文件夹下的tags文件。
然后保存并退出vi。这样,你就可以用vim在任意地方查看有关Linux的函数原形
4、Ctags命令用法
在当前窗口显示标签执行下列命令:
Ctrl+]  跳到当前光标下单词的标签
Ctrl+O   返回上一个标签
Ctrl+T   返回上一个标签
:tag TagName  跳到TagName标签
如果不希望在当前窗口显示标签,可以使用以下命令:
:stag TagName  新窗口显示TagName标签,光标跳到标签处
Ctrl+W + ]  新窗口显示当前光标下单词的标签,光标跳到标签处
当一个标签有多个匹配项时(函数 (或类中的方法) 被多次定义),":tags" 命令会跳转到第一处。如果在当前文件中存在匹配,那它将会被首先使用。
可以用这些命令在各匹配的标签间移动:
:tfirst    到第一个匹配
:[count]tprevious 向前 [count] 个匹配
:[count]tnext  向后 [count] 个匹配
:tlast    到最后一个匹配
或者使用以下命令选择要跳转到哪一个
:tselect TagName
输入以上命令后,vim会为你展示一个选择列表。然后你可以输入要跳转到的匹配代号 (在第一列)。其它列的信息可以让你知道标签在何处被定义过。
以下命令将在预览窗口显示标签
:ptag TagName 预览窗口显示TagName标签,光标跳到标签处
Ctrl+W + }  预览窗口显示当前光标下单词的标签,光标跳到标签处
:pclose   关闭预览窗口
:pedit file.h 在预览窗口中编辑文件file.h(在编辑头文件时很有用)
:psearch atoi 查找当前文件和任何包含文件中的单词并在预览窗口中显示匹配,在使用没有标签文件的库函数时十分有用。
四、管理Vim插件的工具------Vim-addons-manager
大家都知道,vim 有很多扩展,比如 latexsuite, taglist, calendar, bufexplorer 等。这些扩展使得 vim 的威力倍增,大大的方便了各种处理工作。但是也带来了一个问题,系统中的扩展装的多了之后,vim 的启动速度就会变慢。最重要的是,系统默认安装的很多扩展我们平常都使用不到,经常使用的也就几个扩展,偶尔会用一下另外的几个扩展。对于个人电脑这个很容易解决,只安装需要的扩展就行了,但是对于多个用户一起使用的服务器来说就不合适了。另外,vim-scripts 这个包里有巨多的扩展,要么全装,要么不装,也不好办。debian 是如何解决这个问题呢,就是通过 vim-addon-manager。vim-addon-manager 提供了一套机制。首先,安装到系统中的所有扩展默认情况下都不加入 vimruntimepath 路径,这样就不会自动装载。其次,vim-addon-manager 提供了一个注册机制,每安装一个扩展,就需要向 vim-addon-manager 进行注册。这样一来,vim-addon-manager 就知道了系统中所有扩展的信息。
vim-addon-manager 提供了 vim-addons 命令,允许每个用户自由的控制使用哪些扩展,禁用哪些扩展。实现方式是通过符号链接将扩展的文件到每个用户的 .vim/ 目录。使用上很简单:
vim-addons status
显示系统中安装了哪些扩展,哪些是对当前用户开启的,哪些是禁用的
vim-addons install extension-name
对当前用户安装某个扩展,即创建符号链接
vim-addons remove
对当前用户删除某个扩展,即删除符号链接
vim-addons disable
对当前用户禁用某个扩展,在配置文件中插入扩展的禁用命令
vim-addons amend
对当前用户启用某个扩展,从配置文件中移除扩展的禁用命令
说明:如果不先安装vim-script,使用vim-addons显示的插件比较少,安装完成之后可以显示很多插件。
我们介绍如何独立于系统配置文件之外,建立自己的Vim配置文件。当我们自己下载安装Vim插件的时候,也可以另外建立目录,放置我们自己的插件。这个目录一般为/home/user/.vim,另外还需要建立一个插件子目录,一个插件文档子目录,以上的可以进入/home/user目录下通过下面的命令执行:
mkdir .vim
cd .vim
mkdir plugin
mkdir doc
# vim官方插件的安装,xxxx是要安装的插件名,以status中显示的名称为准。安装插件xxxx时使用以下命令(前提是在目录/home/user/.vim/下建立好了plugin和doc两个文件夹)
vim-addons install xxxx
关于vim-addons命令的详细用法,可以通过“man vim-addons”查看其帮助文档
五、vim自动补全——OmniCppComplete
1、安装OmniCppComplete
vim-addons install omnicppcomplete
2、配置OmniCppComplete
在vim配置文件/home/user/.vimrc中加入如下的配置:
"-- omnicppcomplete setting --
" 按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
imap <F3> <C-X><C-O>
" 按下F2根据头文件内关键字补全
imap <F2> <C-X><C-I>
set completeopt=menu,menuone " 关掉智能补全时的预览窗口
let OmniCpp_MayCompleteDot = 1 " autocomplete with .
let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window
let OmniCpp_GlobalScopeSearch=1 " enable the global scope search
let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members
"let OmniCpp_DefaultNamespaces=["std"]
let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column
let OmniCpp_ShowAccess=1
OmniCppComplete是基于ctags数据库即tags文件实现的(基于ctags生成的索引信息来实现自动补全的),所以在ctags -R生成tags时还需要一些额外的选项,这样生成的tags文件才能与OmniCppComplete配合运作。使用下列命令生成tags文件,就可以与OmniCppComplete配合运作:
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
--c++-kinds=+p:为C++文件增加函数原型的标签
--fields=+iaS:在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
--extra=+q:为标签增加类修饰符。注意如果没有此选项,将不能对类成员补全
当自动补全下拉窗口弹出后,一些可用的快捷键:
Ctrl+P  向前切换成员
Ctrl+N  向后切换成员
Ctrl+E  表示退出下拉窗口, 并退回到原来录入的文字
Ctrl+Y  表示退出下拉窗口, 并接受当前选项
其他补全方式:
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  拼写建议
帮助文档
:help omnicppcomplete
六、提示函数原型echofunc
1、插件地址
echofunc下载地址:http://www.vim.org/scripts/script.php?script_id=1735
下载完成后,把echofunc.vim文件放到 ~/.vim/plugin文件夹中
当你在vim插入(insert)模式下紧接着函数名后输入一个"("的时候, 这个函数的声明就会自动显示在命令行中。如果这个函数有多个声明, 则可以通过按键"Alt+-"和"Alt+="向前和向后翻页, 这个两个键可以通过设置g:EchoFuncKeyNext和g:EchoFuncKeyPrev参数来修改。这个插件需要tags文件的支持, 并且在创建tags文件的时候要加选项"--fields=+lS"(OmniCppComplete创建的tag文件也能用), 整个创建tags文件的命令如下:
$ ctags -R --fields=+lS
其他插件说明详见echofunc.vim
如果你在编译vim时加上了"+balloon_eval"特性,那么当你把鼠标放在函数名上的时候会有一个tip窗口弹出, 该窗口中也会有函数的声明
七、标签浏览器Taglist
Taglist用于列出了当前文件中的所有标签(宏, 全局变量, 函数名等)
1、安装Taglist
vim-addons install taglist
2、配置Taglist
在vim配置文件/home/user/.vimrc中加入如下的配置:
"-- Taglist setting --
let Tlist_Ctags_Cmd='ctags' "因为我们放在环境变量里,所以可以直接执行
let Tlist_Use_Right_Window=1 "让窗口显示在右边,0的话就是显示在左边
let Tlist_Show_One_File=0 "让taglist可以同时展示多个文件的函数列表
let Tlist_File_Fold_Auto_Close=1 "非当前文件,函数列表折叠隐藏
let Tlist_Exit_OnlyWindow=1 "当taglist是最后一个分割窗口时,自动推出vim
"是否一直处理tags.1:处理;0:不处理
let Tlist_Process_File_Always=1 "实时更新tags
let Tlist_Inc_Winwidth=0
进入vim后用命令":Tlist"打开/关闭taglist窗口
帮助文档:help taglist.txt
八、文件浏览器和缓冲区管理器WinManager
WinManager用于管理文件浏览器和缓冲区(buffer)。2.0以上版本的WinManager还可以管理其他IDE类型插件,不过要用户在插件中增加一些辅助变量和hook来支持WinManager(帮助文档有相关说明)。
Taglist插件本身就提供了对WinManager的支持,不需要我们去修改它。这里,我们就用WinManager来管理文件浏览器netrw和标签浏览器Taglist。netrw是标准的vim插件, 已经随vim一起安装进系统里了, 不需要我们自行下载安装。
1、安装WinManager
vim-addons install winmanager
2、配置WinManager
在vim配置文件/home/user/.vimrc中加入如下的配置:
"-- WinManager setting --
let g:winManagerWindowLayout='FileExplorer|TagList' " 设置我们要管理的插件
"let g:persistentBehaviour=0 " 如果所有编辑文件都关闭了,退出vim
nmap wm :WMToggle<cr>
3、常用命令
:WMToggle 打开/关闭WinManage,不过我们在配置文件.vimrc中做了快捷键映射,所以直接按wm就可以打开/关闭WinManage
文件浏览器命令(在文件浏览器窗口中使用)
<enter>或双击  如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
<tab>   如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
<F5> 刷新列表
-          返回上一层目录
c  使浏览目录成为vim当前工作目录
d  创建目录
D  删除当前光标下的目录或文件
i  切换显示方式
R  文件或目录重命名
s  选择排序方式
r  反向排序列表
x  定制浏览方式, 使用你指定的程序打开该文件
winmanager帮助文档
:help winmanager
netrw帮助文档
:help netrw
九、安装MiniBufferExplorer
1、安装minibufexplorer
vim-addons install minibufexplorer
2、配置MiniBufferExplorer
在vim配置文件/home/user/.vimrc中加入如下的配置:
" -- MiniBufferExplorer --
let g:miniBufExplMapWindowNavVim = 1 " 按下Ctrl+h/j/k/l,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapWindowNavArrows = 1 " 按下Ctrl+箭头,可以切换到当前窗口的上下左右窗口
let g:miniBufExplMapCTabSwitchBufs = 1 " 启用以下两个功能:Ctrl+tab移到下一个buffer并在当前窗口打开;Ctrl+Shift+tab移到上一个buffer并在当前窗口打开;ubuntu好像不支持
"let g:miniBufExplMapCTabSwitchWindows = 1 " 启用以下两个功能:Ctrl+tab移到下一个窗口;Ctrl+Shift+tab移到上一个窗口;ubuntu好像不支持
let g:miniBufExplModSelTarget = 1    " 不要在不可编辑内容的窗口(如TagList窗口)中打开选中的buffer
3、常用命令
<Tab>  移到上一个buffer
<Shift-Tab> 移到下一个buffer
<Enter>  打开光标所在的buffer
d   删除光标所在的buffer
十、折叠方式foldmethod
1、vim提供以下6种方法来选定折叠方式:
manual 手工定义折叠
indent 更多的缩进表示更高级别的折叠
expr 用表达式来定义折叠
syntax 用语法高亮来定义折叠
diff 对没有更改的文本进行折叠
marker 对文中的标志折叠
2、折叠级别foldlevel
'foldlevel' 是个数值选项:数字越大则打开的折叠更多。
当 'foldlevel' 为 0 时,所有的折叠关闭。
当 'foldlevel' 为正数时,一些折叠关闭。
当 'foldlevel' 很大时,所有的折叠打开。
折叠栏foldcolumn
'foldcolumn' 是个数字,它设定了在窗口的边上表示折叠的栏的宽度。当为0时,没有折叠栏。最大是12。
一个打开的折叠由一栏来表示,顶端是 '-',其下方是 '|'。这栏在折叠结束的地方结束。当折叠嵌套时,嵌套的折叠出现在被包含的折叠右方一个字符位置。
一个关闭的折叠由 '+' 表示。
当折叠栏太窄而不能显示所有折叠时,显示一数字来表示嵌套的级别。
在折叠栏点击鼠标,可以打开和关闭折叠:
- 点击 '+' 打开在这行的关闭折叠
- 在任何其他非空字符上点击,关闭这行上的打开折叠
在vim配置文件/home/user/.vimrc中加入如下的配置:
"--fold setting--
set foldmethod=syntax " 用语法高亮来定义折叠
set foldlevel=100 " 启动vim时不要自动折叠代码
set foldcolumn=5 " 设置折叠栏宽度
3、常用命令
za  打开/关闭在光标下的折叠
zA  循环地打开/关闭光标下的折叠
zo  打开 (open) 在光标下的折叠
zO  循环打开 (Open) 光标下的折叠
zc  关闭 (close) 在光标下的折叠
zC  循环关闭 (Close) 在光标下的所有折叠
zM  关闭所有折叠
zR  打开所有的折叠
帮助文档
:help usr_28.txt
:help fold.txt
十一、 项目目录数管理器Project
Project插件是用来显示项目的目录树的,这个目录树是默认保存在~/.vimprojects文件中。
1、安装Project
vim-addons install project
Project目录树可以通过下面的步骤生成:
1) 打开vim在命令模式下输入 :Project,在屏幕的最左边就会出现一个project框。不过因为没有初始化暂时是空的
2)在命令模式下(不是插入模式)输入\C (大写的C),会出现下面这些信息:
Enter the Name of the Entry: xxxx (输入项目名称)
Enter the Absolute Directory to Load: /xxx/xxx/xxx (输入项目根目录的绝对路径)
Enter the CD parameter: . (“.”为当前目录)或者和项目根目录一致
Enter the File Filter: *.* (符合条件的源文件,可以是*.cpp/*.h等)
PS:项目目录可以嵌套。而且更改之后在~/.vimprojects文件中就能看到内容,你可以手动进行更改。
十二、quickfix命令集
通过quickfix命令集,你可在 Vim 内编译程序并直接跳转到出错位置进行修正。你可以接着重新编译并做修正,直到不再出错为止。
在vim配置文件/home/user/.vimrc中加入如下的配置:
"-- QuickFix setting --
" 按下F6,执行make clean
map <F6> :make clean<CR><CR><CR>
" 按下F7,执行make编译程序,并打开quickfix窗口,显示编译信息
map <F7> :make<CR><CR><CR> :copen<CR><CR>
" 按下F8,光标移到上一个错误所在的行
map <F8> :cp<CR>
" 按下F9,光标移到下一个错误所在的行
map <F9> :cn<CR>
" 以上的映射是使上面的快捷键在插入模式下也能用
imap <F6> <ESC>:make clean<CR><CR><CR>
imap <F7> <ESC>:make<CR><CR><CR> :copen<CR><CR>
imap <F8> <ESC>:cp<CR>
imap <F9> <ESC>:cn<CR>
帮助文档
:help usr_30
:help quickfix
下面的命令运行 "make" (包括你所给出的参数) 程序并捕捉其运行结果: >
:make {arguments}
如果编译时出现错误,按 <Enter>,回到vim界面,看不到出错信息了!这时,可以运行以下命令
:cw[indow]
打开quickfix窗口来查看出错信息,它会自动跳到第一处出错的地方。然后,你可以双击出错某一条出错信息,vim就会自动跳转到相应的出错位置
:cn[ext]  光标移到下一个错误所在的行
:cp[revious] 光标移到上一个错误所在的行
:cfirst  到第一处错误
:clast  到最后一处错误
:cc   空间不够时,Vim 会缩短出错信息。如果你想查看详细信息,可以使用此命令
:cl[ist] 列出所有出错信息的概览(只有那些含有文件名或行数的错误信息会被显示,需要查看那些并不含文件名或行数的信息可用“:cl[ist]!”命令)
十三、Cscope
Cscope是一个类似于ctags的工具,不过其功能比ctags强大很多。
1、安装Cscope
sudo apt-get install cscope
在vim配置文件/home/user/.vimrc中加入如下的配置:
"-- Cscope setting --
if has("cscope")
set csprg=/usr/bin/cscope        " 指定用来执行cscope的命令
set csto=0                        " 设置cstag命令查找次序:0先找cscope数据库再找标签文件;1先找标签文件再找cscope数据库
set cst                            " 同时搜索cscope数据库和标签文件
set cscopequickfix=s-,c-,d-,i-,t-,e-    " 使用QuickFix窗口来显示cscope查找结果
set nocsverb
if filereadable("cscope.out")    " 若当前目录下存在cscope数据库,添加该数据库到vim
cs add cscope.out
elseif $CSCOPE_DB != ""            " 否则只要环境变量CSCOPE_DB不为空,则添加其指定的数据库到vim
cs add $CSCOPE_DB
endif
set csverb
endif
map <F4> :cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
imap <F4> <ESC>:cs add ./cscope.out .<CR><CR><CR> :cs reset<CR>
" 将:cs find c等Cscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快再按下c)
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> :copen<CR><CR>
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR> :copen<CR><CR>
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  查找包含这个文件的文件
用法:
<1>、为源码建立一个cscope数据库
lingd@ubuntu:~/arm/linux-2.6.28.7$ cscope -Rbq
lingd@ubuntu:~/arm/linux-2.6.28.7$ ls cscope.*
cscope.in.out  cscope.out  cscope.po.out
<2>、用vim打开某个源码文件,末行模式下,输入“:cs add cscope.out"(该命令已被我们映射为快捷键F4),添加cscope数据库到vim。因为我们已将vim配置为启动时,自动添加当前目录下的cscope数据库,所以你再添加该cscope数据库时,vim会提示“重复cscope数据库未被加入“
<3>、完成前两步后,现在就可以用“cs find c”等Cscope查找命令查找关键字了。我们已在.vimrc中将“cs find c”等Cscope查找命令映射为<C-_>c等快捷键(按法是先按Ctrl+Shift+-, 然后很快按下c)
帮助文档
:help if_cscop
注意:帮助文档if_cscop中,快捷键映射nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>是有误的!
比如光标“header.h”上按下<C-_>i,也就是查找包含“header.h“的文件。但是按照这个映射规则,则是将<C-_>i映射为cs find i ^header.h$,也就是查找包含“^header.h$“的文件,这显然不是我们想要的结果。该映射规则应该改成nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR>
十四、c/h文件间相互切换 -- 插件: A
下载地址
http://www.vim.org/scripts/script.php?script_id=31
版本
安装
将a.vim 放到 ~/.vim/plugin 文件夹中
作为一个C程序员, 日常Coding时在源文件与头文件间进行切换是再平常不过的事了, 直接用vim打开其源/头文件其实也不是什么麻烦事, 但是只用一个按键就切换过来了。
安装好a.vim后有下面的几个命令可以用了:
:A
在新Buffer中切换到c/h文件
:AS
横向分割窗口并打开c/h文件
:AV
纵向分割窗口并打开c/h文件
:AT
新建一个标签页并打开c/h文件
其他还有一些命令, 你可以在它的网页上看看, 我都没用过, 其实也都是大同小异, 找到自己最顺手的就行了.
我在~/.vimrc中增加了一句:
nnoremap <silent> <F12> :A<CR>
意思是按F12时在一个新的buffer中打开c/h文件,这样在写程序的时候就可以不假思索地在c/h文件间进行切换,减少了按键的次数,思路也就更流畅了。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
将Vim改造为强大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete(有图有真相)
打造linux下的source insight
vim + cscope/ctags 查看分析代码
vim中多标签和多窗口的使用
Vi 经典插件 ctags(转)
vim 安装配置中的坑和技巧
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服