Ctags 5.8中如何为带多重扩展名的生成文件配置langmap映射
嘿,这个问题我刚好折腾过!Ctags 5.8完全能搞定这种多重扩展名的文件映射,只是得用对langmap的语法,别只盯着最后一个后缀就行。
其实Ctags的langmap支持指定完整的文件名后缀模式,不是只能匹配最后一个点之后的部分。咱们可以针对.cpp.py和.j.py这两种特殊后缀分别设置规则,绝对不会影响普通的.py文件。
具体操作分两种场景:
1. 命令行直接运行时配置
直接在命令里加上对应的langmap参数就行:
ctags --langmap=C++:.cpp.cpp.py --langmap=Java:.j.j.py
这里的.cpp.cpp.py是告诉Ctags:凡是文件名以.cpp.py结尾的,都当作C++文件处理;同理.j.j.py对应Java。把原来的单一后缀(.cpp、.j)和多重后缀放在一起用点分隔,Ctags就会识别这些精确的后缀模式,不会搞混。
2. 写入配置文件永久生效
如果不想每次都输命令,把配置写到~/.ctags或者ctags.cnf里:
--langmap=C++:.cpp.cpp.py --langmap=Java:.j.j.py
这样每次运行Ctags都会自动加载这个规则。
验证一下是否生效
生成tags文件后,可以用grep检查对应的文件标签,比如:
grep "cpp_filename.cpp.py" tags
看输出的标签类型是不是C++相关的(比如class、function),而不是Python的标签,就说明配置成功了。
备注:内容来源于stack exchange,提问作者Melandru's Square
相关产品推荐
相关产品推荐

