【问题标题】:How to use cscope with paths that contain spaces如何将 cscope 与包含空格的路径一起使用
【发布时间】:2011-03-12 22:11:24
【问题描述】:

有些文件夹包含空间,因此无法使用 cscope 对这些文件夹进行索引。

我可以请你帮忙解决这个问题,或者任何建议。

谢谢 朱利叶斯


感谢您的回复。

我使用 cscope 的步骤如下

  • 找到 . -name '*.scala'>cscope.files
  • cscope -b
    在这一步。我看到消息表明找不到文件:
    cscope:找不到文件 /work/project/copy
    cscope: 找不到
    的文件 cscope:找不到文件 fp/src/main/jav....
    实际上 fp 的副本是一个文件夹。所以我认为 cscope 无法识别该文件夹包含空间。

当我尝试将 vim 与 cscope 一起使用时遇到了这个问题。也许我需要将此问题移至其他标签。

【问题讨论】:

  • 你使用了 Vim 标签。这是因为你试图在 Vim 中使用:cscope 命令吗?如果是这样,您能否显示您正在尝试的命令以及遇到的错误?

标签: vim cscope


【解决方案1】:

您至少可以简单地使用 GNU find 来完成,您可以使用 -printf-fprintf 选项:

find . -type f -fprintf cscope.files '"%p"\n'

【讨论】:

  • 将 %h/%f 简化为 %p
  • 你的答案是最快的:比我的快 8%,比 sed 快 14%。 . .和 exec 一样快 1000 倍!
【解决方案2】:

pydave 的回答很慢。这种方式耗时 0.10 秒,而 pydave 的回答耗时 14 秒:

find . -name "*.scala" | awk '{print "\""$0"\""}' > cscope.files

【讨论】:

  • 赞!运行速度非常快
【解决方案3】:

您可以使用 find 的 -exec 强制在输出中加上引号:

find . -name "*.scala" -exec echo \"{}\" \; > cscope.files

如果您从脚本中执行此操作,您可能需要搞乱引用/转义。

【讨论】:

  • 这个答案需要大约 1 秒来处理大约 100 个文件。我的回答需要大约 1 秒来处理大约 100,000 个文件。
  • @webb:使用 fprintf(Olivier Diotte 的回答)似乎比我幼稚的建议更好地使用 find
【解决方案4】:

双引号文件名在 cygwin 中有效,而用反斜杠转义则无效。

$ find $PWD -name "*.scala" | sed -e 's/^/"/g' -e 's/$/"/g' > cscope.files

【讨论】:

  • sed 's/.*/"&"/' 稍快
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 2011-04-13
  • 2012-02-26
  • 1970-01-01
相关资源
最近更新 更多