LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1364|回复: 8

我用vim编写程序,如何在自己定义的函数和这个函数的声明之间切换呢?

[复制链接]
发表于 2005-4-20 11:48:50 | 显示全部楼层 |阅读模式
例如:
int aa(); //..........#1
int main(void)
{
      int  b;
      //...................
     b = aa();  //........#2
     //....................
}
//....................
int aa()     //.......#3
{
//................
}
我如何在#1,#2,#3 之间切换呢,谢谢!!
 楼主| 发表于 2005-4-21 09:21:06 | 显示全部楼层
kj老大帮忙啊!!!!!
回复 支持 反对

使用道具 举报

发表于 2005-4-21 09:53:53 | 显示全部楼层
Post by jovesky
例如:
int aa(); //..........#1
int main(void)
{
      int  b;
      //...................
     b = aa();  //........#2
     //....................
}
//....................
int aa()     //.......#3
{
//................
}
我如何在#1,#2,#3 之间切换呢,谢谢!!


用ctags+cscope
ctags -R --extra=f
cscope -BR(这个有段时间没用过了,记得不是很清楚)
ctags里面CTRL+]可以跳到定义的地方,
CTRL+o可以回退,
cscope可以搜索跳到该符号任何一个出现的地方,
或者用vim里面的mark,用法参见: help mark
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-21 13:16:46 | 显示全部楼层
最好是这样的:我摁一下一个键光标定位在声明,然后再摁一下这个键光标定位在定义处,这样的话大程序就可以很方便的改错了。我记得delphi中就有这个功能的。
回复 支持 反对

使用道具 举报

发表于 2005-4-21 13:22:23 | 显示全部楼层
vi的标签:m加字母是定义,`加字母是跳转
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-21 17:17:56 | 显示全部楼层
Post by bonami
vi的标签:m加字母是定义,`加字母是跳转

没看懂,能否解释地详细一些!
回复 支持 反对

使用道具 举报

发表于 2005-4-21 17:43:39 | 显示全部楼层
我说的普通的标签定义(在什么地方定义标签与语法是无关的)。将光标移到一个位置后,按m再按个字母;若干年后,按`再按相应字母,就可以跳回去了
回复 支持 反对

使用道具 举报

发表于 2005-4-21 19:00:37 | 显示全部楼层
这是vim文档中给出的说明:

  1. 查找使用标识符的地方                                    *ident-search*

  2. 您应该已经知道 |tags| 可以被用来跳转到定义函数和变量的地方。但是有时您希望跳
  3. 转到使用函数和变量的地方。可以用以下2种方法实现:
  4. 1. 使用 |:grep| 命令。这个应该可以在大多数 Unix 系统上工作,但是速度会比较慢
  5. (因为它读取所有的文件),并且只能在一个目录中搜索。
  6. 2. 使用 ID 工具集。这个速度比较块而且可以搜索多个目录。它使用一个数据库来存放
  7. 定位信息。您需要一些额外的程序来使它得以工作,并且您必须使数据库不断保持更新。

  8. 使用 GNU id 工具集:

  9. 您所需要的:
  10. - 安装 GNU id 工具集(mkid 是用来创建 ID 的,lid 是用来运行宏的)
  11. - 一个在当前目录下名为 "ID" 的标识符数据库。您可以用 shell 命令 "mkid file1
  12.   file2 .." 来创建它。

  13. 把这些写到您的 .vimrc文件中: >
  14.         map _u :call ID_search()<Bar>execute "/\\<" . g:word . "\\>"<CR>
  15.         map _n :n<Bar>execute "/\\<" . g:word . "\\>"<CR>

  16.         function ID_search()
  17.           let g:word = expand("<cword>")
  18.           let x = system("lid --key=none ". g:word)
  19.           let x = substitute(x, "\n", " ", "g")
  20.           execute "next " . x
  21.         endfun

  22. 使用的时候,把光标放在一个单词上,敲入 "_u",然后 vim 会读入含有这个单词的文
  23. 件。使用 "n"查找这个单词在相同文件中下一次的出现。使用 "_n" 可以跳转到下一个
  24. 文件。

  25. 这个已经使用 id-utils-3.2(这是位于距您最近的 gnu ftp 镜像服务器上的档案
  26. 名称)测试通过了。

  27. [这个的想法来自于 Andreas Kutschera]
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-4-21 22:12:29 | 显示全部楼层
vi的功能太强大,不过命令太繁了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表