ctags遵循自定义shebang

时间:2019-04-30 09:01:38

标签: bash sh ctags exuberant-ctags

我创建了一个使用自定义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。

有人可以帮我吗?

2 个答案:

答案 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