c++ - 为特定目录中除其子目录外的所有 C++ 文件生成标签文件

标签 c++ windows shell vim command-line

当您在 Windows 上的 \Downloads 文件夹中提取 Exuberant Ctags 的 “ctags58.zip” 存档,然后添加此文件命令到你的 vimrc 文件:

让 $PATH .= ';C:\Users\USR\Downloads\ctags58'

Vim (文本编辑器) 中使用命令 :!mkdir C:\Users\USR\vimfiles\tags 创建文件夹后,为什么下面的命令不能正常工作:

:!ctags --recurse=no --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f C:\Users\USR\vimfiles\tags\cpp C:\Users\USR\Projects\PROJ\include

和:

:!ctags --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f C:\Users\USR\vimfiles\tags\cpp C:\Users\USR\Projects\PROJ\include

这些命令只是生成一个标记文件,而不标记 \include 目录中的任何文件。这是他们的完整来源:

!_TAG_FILE_FORMAT   2   /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED   1   /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR    Darren Hiebert  /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME  Exuberant Ctags //
!_TAG_PROGRAM_URL   http://ctags.sourceforge.net    /official site/
!_TAG_PROGRAM_VERSION   5.8 //

我想要的是为 \include 目录中除 \include 子目录之外的所有 C++ 文件生成一个标记文件。下面的命令正在运行,但它正在处理所有子目录:

:!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f C:\Users\USR\vimfiles\tags\cpp C:\Users\USR\Projects\PROJ\include

请注意,路径 C:\Users\USR\Projects\PROJ\include 已存在。

最佳答案

ctags 的 --exclude 选项可用于排除名称与模式匹配或在文件中列出的文件。

如果您根本不想查看任何子目录,请不要使用 -R (--recurse) 选项。然后你必须列出要处理的文件(而不是包含它们的目录)。这很容易用通配符完成:例如,要处理当前目录中的所有文件,ctags *。如果只想包含具有特定文件扩展名的文件,则应使用适当的通配符模式;例如,*.cc*.cxx 用于 C++ 文件。看起来您并没有这样做,只是命名了包含文件的目录。

关于c++ - 为特定目录中除其子目录外的所有 C++ 文件生成标签文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19068181/

相关文章:

c++ - libcurl 是否支持发送不加密的电子邮件?

c++ - 解析外部符号时出错

c++ - 简单的 C++ GUI 工具包

windows - 通过 Powershell 为证书的私钥分配权限 (Win 2012 R2)

C++在将输入值添加到数组之前验证输入值

java - 如何从 JNI 代码中检测字节顺序?

windows - *.bat 和 *.cmd 文件有什么区别?

linux - 显示.im6 : no decode delegate for this image format `/tmp/magick-KFcbfWUi'

Git commit -m 不接受消息中的空格

Linux SHELL 脚本,读取每行不同的列数