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


    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

    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窗口,

    我们可以通过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 <F8> :TlistToggle<CR>

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

    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 <F9> :NERDTreeToggle<CR>

    这样以后在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

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

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

  • 相关阅读:
    程序片段--2的乘方
    Set、Map集合、栈、队列
    Map迭代(六种)
    Struts2标签--控制标签
    线性表
    数据结构笔记(1)
    spingMVC问题小结
    《浪潮之巅》十四章笔记
    《浪潮之巅》十三章笔记
    《浪潮之巅》十二章笔记
  • 原文地址:https://www.cnblogs.com/sunnyside/p/12792036.html
Copyright © 2020-2023  润新知