我创建了一个使用自定义shebang的shell脚本。
#!/usr/bin/env my_custom_shebang
bash_function() {
}
我希望ctags为其语言bash生成一个标签文件。
我尝试了ctags -R my-custom-script --force-language=sh
,但没有成功。
如果我将#!/usr/bin/env my_custom_shebang
更改为#!/usr/bin/env bash
,则ctags正常。
但是我需要ctags来生成标签,并在第一行中使用我而不是bash shebang。
有人可以帮我吗?
答案 0 :(得分:0)
您有几种选择。
--language-force=sh
是最简单的一个。您尝试过的那个--force-language=sh
不存在。
另一种选择是使用自定义扩展名(例如.cst
)和选项--langmap=sh:+.cst
。
如果在+wildcards
的输出中看到ctags --version
,则也可以使用括号中的文件名模式代替自定义扩展名,即,使用名称以my_custom_shebang
开头,您可以使用cst_
。
最后一点,我的理解是,术语“ shebang ”是指两个字符--langmap='sh:+(cst_*)'
,并扩展到以它们开头的整行,而不是特定的命令解释器被调用。因此,我将您的自定义Shebang示例改写为
#!
但这真的是个书呆子。
答案 1 :(得分:0)
我的回答假设您正在使用通用标签(https://ctags.io)。
我将展示两种不同的解决方案。
A。更改选项的顺序
尝试
ctags --force-language=sh -R my-custom-script
代替
ctags -R my-custom-script --force-language=sh
。
B。使用--alias-= +选项
尝试
ctags --alias-sh=my-custom-script -R my-custom-script
。