为特定目录中的所有C ++文件生成标记文件,但子目录除外

时间:2013-09-28 14:47:51

标签: c++ windows shell vim command-line

Windows 上的 \ Downloads 文件夹中解压缩Exuberant Ctags的“ctags58.zip”存档后,再添加此项命令 vimrc 文件:

let $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 目录中的所有C ++文件生成一个标签文件,但 \ include 子目录除外。以下命令正在运行,但它正在处理所有子目录:

:!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已存在。

1 个答案:

答案 0 :(得分:1)

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

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