每次在Vim中加载cscope.out后,我需要将Vim的“pwd”更改为cscope.out文件所在的目录,这可能是由于cscope在生成标记文件时使用相对路径。因此,如果有一种方法可以强制cscope在其标记文件中使用绝对路径--cscope.out,那么无论您的Vim会话的pwd是否与cscope.out文件所在的目录相同,都是如此。如何让cscope在cscope.out文件中使用绝对路径?
回答
当导入cscope.out中,你可以提供前缀,即
:cscope add /path/to/cscope.out /path/to/src/code
那么你的搜索会变成像:
Cscope Tag: foobar
# line filename/context/line
1 21 /path/to/src/code/foobar_file.c
@Aaron H.是正确的。
对于我的配置我用cscope_maps.vim插件并修改了以下行:
40 " add any cscope database in current directory
41 if filereadable("/usr/project/cscope.out")
42 cs add /usr/project/cscope.out /usr/project
43 " else add the database pointed to by environment variable
44 elseif $CSCOPE_DB != ""
45 cs add $CSCOPE_DB
46 endif
去哪儿“在/ usr /项目”是我想要的cscope.out中文件的位置和绝对路径使用。
的cscope tutorial有针对此问题一个非常简单的解决方法:
11.Try设置
$CSCOPE_DB
环境变量指向创建Cscope的数据库,这样你就不会总是需要启动vim以 与数据库相同的目录。这对于代码被拆分成多个子目录的 项目特别有用。注: 这个工作,你应该建立具有绝对路径的数据库: cd到/,并做find /my/project/dir -name '*.c' -o -name '*.h' > /foo/cscope.files
然后在同一目录中cscope.files文件运行Cscope的(或使用 通过“cscope -i /foo/cscope.files'),则设置并导出$ CSCOPE_DB 变量,它指向该产生的cscope.out中文件):
cd /foo cscope -b CSCOPE_DB=/foo/cscope.out; export CSCOPE_DB
(最后的命令以上对于Bourne /光辉/ Bash shell:我忘记了 如何导出基于csh的shell中的变量,sin我避免他们像瘟疫 )。
你现在应该可以在你的 机器上的任何目录下运行'vim -t foo',让Vim直接跳到'foo'的定义。我倾向于 为我的所有不同的项目编写小shell脚本(只是定义和导出CSCOPE_DB),这使我可以通过 简单的'source projectA'命令在它们之间切换。
您可以使用您的cscpoe.files绝对路径到您的文件,这里是我的脚本来生成我cscope的数据库
#!/bin/sh
find $PWD -name '*.[ch]' -exec echo \"{}\" \; | sort -u > cscope.files
cscope -bvq
然后,只需VIM cscope.files,也许:CS添加cscope.out中,尽管我的cscope插件可以自动完成。然后我搜索我感兴趣的文件并用gf跳到它们。
您可以让vim解释cscope中的路径。通过设置cscoperelative
选项将相对于设置为cscope.out文件的位置。 从:help csre
:
如果“cscoperelative”被设置,那么在没有给予 cscope的前缀的(前缀是-P选项的cscope的参数), cscope.out中位置的基名(通常是项目根目录)将被用作前缀来构造一个绝对路径 。默认是关闭的。 注意:此选项仅在cscope(cscopeprg)为 时未使用前缀路径(-P)进行初始化时有效。
例子
:设置csre
:nocsre设置
这应该是真正被接受的答案,因为从vim + cscope的角度来看是迄今为止最简单的解决方案。谢谢您的回答! – janjust 2016-02-01 17:05:46
注:因为我没有足够的资深添加评论: 亚伦和NEHA的答案是有用的我更多地了解了整个系统,但这个问题的最好和最直接的答案目前排在第三位,是沙燕的。
提问者更要求有关cscope的获取绝对路径,不使用(非常有能力和强大)VIM围绕它的工作。
注2:还有另外一种方法,使vim的一个变化,完成相同的东西NEHA一样。
:set cscopeprg=cscope -P path_to_relative_base
我喜欢NEHA的更好,但这种方式更接近于修改cscope的,而不是vim的设置,如果这是你想要的。这是允许您将cscope数据库移到任何地方的唯一方法。
- 1. 如何在ant中使用绝对路径来删除文件?
- 2. 使用绝对路径打开文件
- 3. 绝对文件路径
- 4. 如何从QDir和相对文件路径创建绝对文件路径?
- 5. python/zip:如果提供绝对路径文件,如何消除zip压缩文件中的绝对路径?
- 6. cscope:cscope错误:cscope:无法从文件读取列表大小cscope.out
- 7. 如何使绝对路径HTTP在golang
- 8. 在Python中获取绝对文件路径的目录路径
- 9. 如何使用JavaScript或...获取文件绝对路径?
- 10. 如何使用绝对路径从Java运行Python文件?
- 11. 如何使用Delphi获取INI文件的绝对路径?
- 12. 如何使用tkFileDialog获取文件的绝对路径?
- 13. 如何使用绝对路径加载svg文件
- 14. 在FreeMarker中使用绝对路径
- 15. 如何在Eclipse中使用插件获取项目文件的绝对路径
- 16. print cscope的符号链接的绝对路径
- 17. 从绝对路径中删除文件
- 18. strace中只有绝对文件路径?
- 19. qmake pro文件中的绝对路径
- 20. 使用绝对路径,FileNotFoundError
- 21. 如何在css网址中使用相对/绝对路径?
- 22. 如何用文件中的绝对路径替换变量值?
- 23. 如何在Delphi中从绝对路径获取文件的URL?
- 24. 在Unix中,如何以绝对路径名创建文件
- 25. 如何在Hadoop文件系统中获得绝对路径?
- 26. 在Django中上传后如何获取文件绝对路径?
- 27. 相对URL的绝对文件路径
- 28. 的Python:绝对路径相对让到另一条路径
- 29. Eclipse插件文件夹绝对路径
- 30. 如何使用剃刀在umbraco中获取绝对媒体文件路径?
另外,在脚本运行的相同目录中运行'export CSCOPE_DB = $(pwd)/ cscope.out' – Paschalis 2015-01-22 10:13:46