vi/vim使用进阶: 程序员的利器 – cscope

<< 返回vim使用进阶: 目录

本节所用命令的帮助入口:

:help cscope 

在前面的文章中介绍了利用tag文件,跳转到标签定义的地方。但如果想查找函数在哪里被调用,或者标签在哪些地方出现过,ctags就无能为力了,这时需要使用更为强大的cscope。

Cscope具有纯正的Unix血统,它最早是由贝尔实验室为PDP-11计算机开发的,后来成为商用的AT&T Unix发行版的组成部分。直到2000年4月,这个工具才由SCO公司以BSD license开源发行。

Cscope的主页在http://cscope.sourceforge.net/,如果你的计算机上没有cscope,你可以在此处下载它,在写本文时,它的最新版本是15.6。安装它非常简单,你只需要在cscope的源代码目录中执行下面三条命令:

./configure
make
make install 

在windows上也可以使用cscope,在cscope的主页上可以下载到由DJGPP编译器编译的cscope for windows,不过这个版本不能和vi一起工作。或者你可以下载cygwin工具包(http://www.cygwin.com/),这个工具包中也包含了cscope。

http://iamphet.nm.ru/cscope/有Sergey Khorev预编译的一个Win32版本的cscope,这个版本的cscope可以很好的与windows版本的vim搭配使用。

cscope的用法很简单,首先需要为你的代码生成一个cscope数据库。在你的项目根目录运行下面的命令:

cscope -Rbq 

这些选项的含义见后面。这个命令会生成三个文件:cscope.out, cscope.in.out, cscope.po.out。其中cscope.out是基本的符号索引,后两个文件是使用”-q“选项生成的,可以加快cscope的索引速度。在windows上使用cscope时,你可能会遇到-q选项被忽略的提示,解决办法请看这篇文章:Windows下cscope -q选项出错的解决

在缺省情况下,cscope在生成数据库后就会进入它自己的查询界面,我们一般不用这个界面,所以使用了”-b“选项。如果你已经进入了这个界面,按CTRL-D退出。

Cscope在生成数据库中,在你的项目目录中未找到的头文件,会自动到/usr/include目录中查找。如果你想阻止它这样做,使用”-k“选项。

Cscope缺省只解析C文件(.c和.h)、lex文件(.l)和yacc文件(.y),虽然它也可以支持C++以及Java,但它在扫描目录时会跳过C++及Java后缀的文件。如果你希望cscope解析C++或Java文件,需要把这些文件的名字和路径保存在一个名为cscope.files的文件。当cscope发现在当前目录中存在cscope.files时,就会为cscope.files中列出的所有文件生成索引数据库。通常我们使用find来生成cscope.files文件,仍以vim 7.0的源代码为例:

cd ~/src/vim70 
find . –type f > cscope.files
cscope -bq 

这条命令把~src/vim70目录下的所有普通文件都加入了cscope.files,这样,cscope会解析该目录下的每一个文件。上面的cscope命令并没有使用”-R“参数递归查找子目录,因为在cscope.files中已经包含了子目录中的文件。

注意:find命令输出的文件以相对路径表示,所以cscope.out的索引也相对于当前路径。如果你要在其它路径中使用当前的cscope.out,需要使用下面介绍的-P选项。

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中使用cscope的功能,需要在编译vim时选择”+cscope“。vim的cscope接口先会调用cscope的命令行接口,然后分析其输出结果找到匹配处显示给用户。

在vim中使用cscope非常简单,首先调用”cscope add“命令添加一个cscope数据库,然后就可以调用”cscope find“命令进行查找了。vim支持8种cscope的查询功能,如下:

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

例如,我们想在vim 7.0的源代码中查找调用do_cscope()函数的函数,我们可以输入:”:cs find c do_cscope“,回车后发现没有找到匹配的功能,可能并没有函数调用do_cscope()。我们再输入”:cs find s do_cscope“,查找这个C符号出现的位置,现在vim列出了这个符号出现的所有位置。

我们还可以进行字符串查找,它会双引号或单引号括起来的内容中查找。还可以输入一个正则表达式,这类似于egrep程序的功能,但它是在交叉索引数据库中查找,速度要快得多。

vim提供了一些选项可以调整它的cscope功能:

  • cscopecscopeprg选项用于设置cscope程序的位置。
  • cscopecscopequickfix设定是否使用quickfix窗口来显示cscope的结果,详情请”:help cscopequickfix“;
  • 如果你想vim同时搜索tag文件以及cscope数据库,设置cscopecscopetag选项;
  • cscopecscopetagorder选项决定是先查找tag文件还是先查找cscope数据库。设置为0则先查找cscope数据库,设置为1先查找tag文件。我通常设置为1,因为在tag文件中查找到的结果,会把最佳匹配列在第一位。

vim的手册中给出了使用cscope的建议方法,使用命令”:help cscope-suggestions“查看。

下面是我的vimrc中关于cscope接口的设置:

    
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" cscope setting
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if has("cscope")
  set csprg=/usr/bin/cscope
  set csto=1
  set cst
  set nocsverb
  " add any database in current directory
  if filereadable("cscope.out")
      cs add cscope.out
  endif
  set csverb
endif

nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<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>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>
 

下面的两个链接是cscope主页提供的cscope使用方法,也可以作为参考:

vim/cscope指导:http://cscope.sourceforge.net/cscope_vim_tutorial.html

在大项目中使用cscope:http://cscope.sourceforge.net/large_projects.html

在vim的网站上有很多与cscope相关的插件,有兴趣可以去看一下。

我以前写的Vim + Cscope/Ctags

[参考文档]

<< 返回vim使用进阶: 目录

47 thoughts on “vi/vim使用进阶: 程序员的利器 – cscope”

  1. (以下为CSDN评论的转帖)

    #sk_1980 发表于2007-04-10 13:52:50 IP: 222.66.163.*
    问个问题,使用cscope的时候每次都要输入命令,能不能光标定位到一个函数名,然后按某个快捷键直接给出调用该函数的列表

    #easwy 发表于2007-04-10 14:40:28 IP: 213.70.90.*
    当然可以,你只需要在你的vimrc中增加一个键映射。
    在我文章中的”c”就可以完成你所说的功能,它是由
    nmap
    c :cs find c =expand(““)
    进行映射的。

    或者你可以下载下面的插件,把它放在你的.vim/plugin/目录下:
    http://www.vim.org/scripts/script.php?script_id=51

    #sk_1980 发表于2007-04-13 16:46:22 IP: 222.66.163.*
    thanks,我试试

  2. (以下为CSDN评论的转帖)

    #flyincosmic 发表于2007-05-03 16:32:48 IP: 220.192.46.*
    我怎么建立数据库的时候,总是告诉我输入文件指定了两次,开始还以为是cscope.files的问题,结果只保留了cpp,仍然如此

    info

    cscope: can not create invert index; ignoring -q option
    cscope: remove files ncscope.in.out and ncscope.po.out

    在使用的时候,无论搜索什么,都会得到两对同样的结果,一个是完全大写的文件名标识,另一个则是完全小写的,都指向同样的地方(因为本就是一个函数、结构……)

    #easwy 发表于2007-05-04 12:19:18 IP: 219.133.160.*
    那两句提示是说,不能生成cscope的快速索引文件。
    我没用过windows下的cscope,不太清楚是否和cscope的版本有关。
    你用的是http://iamphet.nm.ru/cscope/下载的cscope吗?把你创建数据库的命令发出来。

    #flyincosmic 发表于2007-05-06 20:33:44 IP: 220.207.37.*
    就是csope -Rbq

    #flyincosmic 发表于2007-05-07 00:01:32 IP: 220.192.41.*
    cscope 用的是你提供链接的在win2k下使用cscope的文章作者编译的版本, 源代码当然是iamphet.nm.ru的

  3. (以下为CSDN评论的转帖)

    #mslk 发表于2007-05-07 00:18:23 IP: 221.15.35.*
    cscope在windows下使用mingw编译为native的方法
    http://blog.csdn.net/mslk/archive/2…06/1598513.aspx

    http://www.chinalinuxpub.com/bbs/showthread.php?p=281675#post281675
    有编译好的版本下载:
    http://www.chinalinuxpub.com/bbs/attachment.php?attachmentid=4916

    #mslk 发表于2007-05-07 00:23:21 IP: 221.15.35.*
    cscope15.6-win32在这里下载:
    http://www.chinalinuxpub.com/bbs/attachment.php?attachmentid=4917

    #muzuiget 发表于2007-06-08 00:19:33 IP: 59.41.242.*
    在windows下,我用Cygwin的控制台生成了那三个文件,但在vim用ex命令”cscope add cscope.out”
    但是“出现E623 无法生成cscope进程”
    怎么办?

    #easwy 发表于2007-06-08 10:35:47 IP: 213.70.90.*
    我也遇到过这种情况,可能是你的cscopeprg没设对,检查一下。
    :help cscopeprg

  4. (以下为CSDN评论的转帖)

    #muzuiget 发表于2007-06-08 23:29:05 IP: 218.19.243.*
    捣鼓一阵,发现几个问题
    Cygwin下那个没有cscope.exe,只有mlcscope.exe。
    开始我用Cygwin的控制台生成那三个文件,把Cygwin/bin目录加进PATH,vim下执行:cscope add cscope.out,出现“E623 无法生成cscope进程”。设置好cscopeprg(先取消PATH),问题依旧
    然后再在CygwinCygwin工具集bin目录下的mlcscope.exe复制一份改名为cscope.exe,再执行:cscope add cscope.out,命令提示符闪了一下,没有错误信息,执行:cs show,出现“没有cscope连接”
    在然后查到了个tips,http://vim.sourceforge.net/tips/tip.php?tip_id=1362看不懂,下面 Additional Notes说“This patch is now official. It is patch Patch 7.0.184.”我已经是7.1了,查了下帮助手册,没发现说如何用mlcscope.exe,在cscopeprg填上mlcscope.exe的路径再试(先取消PATH),依然失败,郁闷,不懂怎么用,放弃……

    用http://iamphet.nm.ru/cscope下的,解压后两个文件,一个是sort.exe,添加进PATH,生成生成数据库,出现四楼的问题
    cscope: can not create invert index; ignoring -q option
    cscope: remove files ncscope.in.out and ncscope.po.out
    只有一个cscope.out生成,真多波折……,在windows下真麻烦,万般无奈,回到http://iamphet.nm.ru/cscope看看,咦?下边有说明,在PATH里,cscope的路径要放在系统目录前面,因为系统本身有sort.exe了,于是改了PATH,再试,ok,vim下连接数据库,ok,执行cs show,没问题,终于搞定,娃哈哈哈哈。

    看了楼主的vim文章大有收获,thanks!

  5. (以下为CSDN评论的转帖)

    #btwo0 发表于2007-12-21 13:21:51 IP: 210.176.71.*
    按照muzuiget的方法作了一遍,但在vim用命令“cscope add cscope.out”,依然出现错误“出现E623 无法生成cscope进程”。我已经设置了set csprg=c:\Program\ Files\cscope,PATH变量里添加了c:\Program\ Files\cscope。我用的是windows下的cscope, 来源是http://iamphet.nm.ru/cscope
    有什么办法啊

    #easwy 发表于2007-12-21 14:14:50 IP: 213.70.90.*
    你在命令行窗口下可以直接用cscope命令了吗?用cscope -h试试,看能不能执行成功
    如果已经可以,你所csprg的名字设置成下面的试试:
    set csprg=cscope

    我感觉还是和csprg的设置有关,也可以试试把路径分隔符换成/。
    另,你的c:\Program\ Files\cscope是一个目录?还是一个文件?csprg需要的是cscope文件,而PATH变量设置的是一个目录

    #btwo0 发表于2007-12-21 15:31:48 IP: 210.176.71.*
    我可以在命令行直接使用cscope命令,如果把PATH中的c:\Program\ Files\cscope去掉,则找不到该命令,所以我的系统应该调用的是该路经下的cscope.

    c:\Program\ Files\cscope是一个目录,我尝试设置set csprg=c:\Program\ Files\cscope\cscope.exe,当我运行”cscope add cscope.out”,会导致gvim 7.1当掉。从task manager看,cscope已经运行了,gvim is not responding.

    同样,我也试了设置set csprg=cscope,运行”cscope add cscope.out”,不会出现E623错误。但当我运行命令”cs find s val”时,错误为”E259 no matchs found for cscope query s of val”。我的文件都在一个目录里,应该不是path dependency的问题。
    不好意思,太长篇了

    #easwy 发表于2007-12-21 17:56:11 IP: 213.70.90.*
    你的cscope已经工作了,只是找不到名为val的符号

  6. (以下为CSDN评论的转帖)

    #btwo0 发表于2007-12-24 11:48:23 IP: 210.176.71.*
    我想我找到问题的所在了,是路径的问题。当我在项目根目录下输入命令“cscope -P .“,会出现cscope的command line运行界面,这时,我再查找”val”,就可以找到了,可是我无法在vim中使用cscope,可能是我path设置的不对,可以帮我看一下么?
    我的项目根目录是c:\btwo0,子目录是c:\btwo0\proj1; c:\btwo0\proj2…,vim的安装目录是c:\Program Files\Vim,cscope的目录是c:\Program Files\cscope

    #easwy 发表于2007-12-24 12:32:16 IP: 213.70.90.*
    假设你是在c:\btwo0下运行“cscope -Rb”生成了cscope.out。那么你在vim中,使用”:cd c:/btwo0″来切换工作路径,用”:cs add cscope.out”,然后就可以查找val了。
    如果你vim的当前工作路径没有设置为c:\btwo0,可以用”:cs add cscope.out c:/btwo0″命令来增加cscope连接。
    通常我在使用时,vim的工作路径始终在项目根目录。第二种方法我没测试过,理论上应该是可行的。

    #btwo0 发表于2007-12-24 13:14:42 IP: 210.176.71.*
    太谢谢了,第一种方法是对的,我已经可以找到val了,第二种方法不对阿,“:cs show”的结果是“no cscope connection”
    我现在可以用“cscope+ctags+vim”了,都是从lz的文章里学的,大有收获阿

    #easwy 发表于2007-12-24 13:52:50 IP: 213.70.90.*
    还是假设你是在c:\btwo0下运行“cscope -Rb”生成了cscope.out。第二种方法应该是”:cs add c:/btwo0/cscope.out c:/btwo0″

  7. (以下为CSDN评论的转帖)

    #sohuandyahoo 发表于2008-01-08 13:22:39 IP: 60.31.124.*
    在windows下不能用-q选项?我用了-q在gvim里面有些函数符号就找不到了,在命令行下直接用cscope打开,显示可以找到,不过ctrl d退出后索引文件就被删了。如果不用q选项生成索引就没问题,奇怪

    #btwo0 发表于2008-01-11 17:16:04 IP: 210.176.71.*
    谢谢,第二种方法是可以的。

    #newone 发表于2008-01-23 22:33:40 IP: 220.181.38.*
    楼主,你的帖子很有用,我也照着使用了,这里先谢谢:)
    但我有两个问题:
    1)c++文件的索引建立似乎没有用??
    我的项目都是c++文件,直接cscope -Rqb 和导出到cscope.files在cscope -qb得到的3个文件一样(说明他们是一样的)。
    2)cscope的s,c,d的查找方式好像有问题,比如有两个函数:
    init(),someclass::init()。对两个执行cs find s得到的结果是一样的(都是init()的声明),它好像没有办法区分c++的类名字空间,而只是函数名的匹配,你的情况是这样的吗??

    如果你知道,请一定告诉我:)

    #easwy 发表于2008-01-28 14:27:26 IP: 213.70.90.*
    1) 不知道你的实验环境是怎么样的。cscope缺省情况下是不会解析c++文件的。

    2) 确实是这样,cscope不能区分类名,它会把所有符合的内容列出来。这一点和ctags是一样的。

  8. easwy:您好,感谢您的这一系列的文章,帮助我很快地熟悉使用vim,谢谢。
    我现在是用远程的shell来写程序,服务器没有安装cscope,而又不能获取root权限。所以,我想能不能通过和安装vim一样的方式来安装cscope?

  9. 在vim中使用了cscope一段时间,有一个问题,我一直没找到答案,向您请教:
    在vim中使用ctags时可以用ptag在quickfix窗口中输出查找结果,但在cscope的文档中却没有看到类似命令,只有直接跳转、水平分割、垂直分割三种方式显示搜索结果。我按照文档提示在.vimrc中设置“set cscopequickfix=s-,c-,d-,i-,t-,e-”却没有任何效果(文档提示需要编译时开启quickfix选项,但是却可以正常使用ptag命令,在vim中gcc编译时也可正常开启quickfix窗口)。
    请问,要怎样在能在quickfix窗口中显示查询结果?如: 用“:cs find c main”,怎样才能让它在quickfix窗口中显示结果?如果要想在源文件中用快捷键查询cscope,要怎样进行键映射?

  10. @nick198119
    你的cscopequickfix选项设置是正确的,你说的不能在quickfix窗口中输出查找结果是什么意思?用:version看一下,你的quickfix功能是否编译进来了?

    我的这篇文章里,就定义了一些cscope的快捷键,在vim.org上专门有个插件定义了cscope的快捷键的。

  11. 用:vesion查看了,加入了编译时quickfix功能,而且用:ptag命令也可打开quickfix窗口查看tags。问题是我要用什么命令打开quickfix窗口查看cscope的搜索结果?如我可用:scs find c main 或者对应的键映射查询cscope的搜索结果,它是分割窗口显示的。那么有没有类似的命令使它显示在quickfix窗口?

  12. @nick198119
    只需要配置cscopequickfix就可以了,你现在的搜索内容已经保存在quickfix缓冲区了,你只需要用:cw命令把quickfix窗口显示出来即可。

    :help quickfix查看更多的quickfix命令

  13. 非常感谢!这个问题弄清楚了。原来是我将ptag的预览窗口和quickfix窗口搞混淆了。记得当时在vim帮助文档中查看ptag命令时提到需要编译是加入quickfix支持,一直误以为它也是quickfix窗口的一种,后来又在vim中加入cscope,觉得用预览窗口查看函数的定义非常方便,不用来回跳转或切换窗口,看到cscope中有quickfix选项,所以想在cscope时实现有类似效果,现在看来这完全不是一回事。

  14. 您好,我是名学生,可能问的问题比较初级,恕我冒昧。
    我是用sudo apt-get install cscope安装的cscope。可以正常使用,但我仍想知道vim查看cscope是否可用的命令是什么?
    在help:keycodes 中 的标识符是,含义是“零”。这是什么意思呢?

  15. 貌似第二个问题不完整,重发一次
    在help:keycodes 中 的标识符是Nul,含义是“零”。这是什么意思呢?

  16. 我的环境变量path只有cscope.exe 和 sort.exe所在的文件夹。设置好后运行正常。但是重启后也会出现以下错误:
    输入文件指定了两次

    cscope: can not create invert index; ignoring -q option
    cscope: remove files ncscope.in.out and ncscope.po.out
    我把path删掉又重建个一模一样的就又正常了
    请问这是怎么回事?有解决办法吗?

  17. @west
    我试了我所用的cscope for windows,有同样的提示,我认为是windows版的cscope不支持-q选项:

    Input file specified two times.
    
    cscope: cannot create inverted index; ignoring -q option
    cscope: removed files ncscope.in.out and ncscope.po.out
    
  18. @Easwy
    Windows版本的cscope是支持-q选项的,出现以上错误是因为没找到合适的sort命令。所以只要cscope进程的工作目录下有GNU版本的sort就可以了。注意是进程的工作目录,不是可执行程序的目录。具体原因看一下cscope的代码片段。

    build.c

    #ifdef WIN32
    snprintf(sortcommand, sizeof(sortcommand), “set LC_ALL=C && sort -T %s %s”, tmpdir, temp1);
    #else
    snprintf(sortcommand, sizeof(sortcommand), “env LC_ALL=C sort -T %s %s”, tmpdir, temp1);
    #endif

  19. 请问博主,在vimrc映射的这行代表什么意思,能详细解释一下吗?谢谢。
    nmap c :cs find c =expand(“”)

  20. @penzo
    nmap <C-@>c :cs find c <C-R>=expand(“<cword>”)<CR><CR>

    这行是说把”CTRL-@ c”键映射为”:cscope find c”命令,来查找当前光标下函数被调用的地方。
    :help :<cword>

  21. 请问博主,cscope手册中给出了3个add命令的示例:
    :cscope add /usr/local/cdb/cscope.out
    :cscode add /projects/vim/cscope.out /usr/local/vim
    :cscope add cscope.out /usr/local/vim -C
    其中第二、三个具体是什么意思?

  22. @panta
    手册里写的很清楚了,第二个和第三个命令用于给cscope传递特定的参数,例如,第三个命令相当于使用如下参数调用cscose:

    cscope -P /usr/local/vim -C

    至于参数的含义,参见cscope手册

  23. 博主你好,首先很感谢你的这一系列文章,对我帮助很大,非常感谢。
    这里有个问题请教一下:
    对于cpp文件,经常会有不同的类中有相同名字的函数的情况,比如一个“窗口系统”的工程,可能会有很多类中都有draw()这样的函数。
    我在使用cscope生成数据库并添加到vim后,搜索某一个类的draw()函数,想要看他的声明或调用关系时,得到的结果包括了所有的类中的draw()函数。
    而在Source Insight中,搜索的结果是只针对这个类的draw()函数的。
    请问博主,vim+cscope是否可以做到Source Insight这样的处理。

  24. 最后的键位映射没看懂,照抄过去没有用啊,这是为什么?
    能不能稍微提一下这几个映射的含义?我的理解就是Ctrl+..
    但是调不出来。。

    1. 举个例子,如果想查看函数被调用的地方,可以先按下CTRL-@,然后再按c。其实CTRL-@不用按下SHIFT,直接按CTRL-2就可以了。

  25. 发现如果路径有空格的话,find . -type f > cscope.files 生成的文件被 cscope 执行,会有问题,报错找不到文档。比如路径是:src/util/packaging/win os/crypt
    cscope.files里面就会有两行:
    src/util/packaging/win 和 os/crypt
    尝试了下,添加双引号就行:find . -name “*” -type f -exec echo ‘”‘{}'”‘ >> cscope.files \;

  26. Easwy老师好,我的vim版本为:
    $ vim –version
    VIM – Vi IMproved 7.4 (2013 Aug 10, compiled Jan 2 2014 19:40:46)
    在~/.vimrc中设置类似如下命令:
    nmap s :cs find s =expand(“”)
    nmap s :scs find s =expand(“”)

    但一按ctrl+@+s等键,vim就会卡死,不能操作。
    请问为什么会出现上述问题?谢谢!

    ps:用:cs find s 等命令没有问题。

    1. Vim卡死的原因是 你在按<ctrl>+@+s时可能因为输入速度的问题,按成了<ctrl>+s,而<ctrl>+s在终端驱动里是“停止输入”的意思,所以表现的是Vim没反应了。遇到这种情况,你可以按<ctrl>+Q恢复。
      你可以把:cs find s 命令映射成别的键,以避免再出现此类问题。

  27. 楼主怎样通过配置的方式指定prepend path,命令行模式是这样 “:cscode add /projects/vim/cscope.out /usr/local/vim “;可以用,但是这样很麻烦,我将”cs add /projects/vim/cscope.out /usr/local/vim”写到.vimrc 中无效,上面的命令我通过我的情况做出修改了,但是prepend path还是空,请问这个问题怎么解决??

  28. 你好 我在编译的时候总是出错误,提示ncurses.h找不到头文件。
    当时我在/usr/include 文件夹里面就可以找得到这个头文件。
    不知道是什么原因。需要在放在特殊的文件夹里面进行编译码?

发表评论

电子邮件地址不会被公开。 必填项已用*标注