当您在 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/