ctag识别关键字的时候,一般不会把中划线(-)作为单词的一部分;对于bash脚本,函数名中是可以含有中划线的,这时候使用ctag就不能把含有中划线的关键字识别出来。
其实,ctag是可以定义语言,定义识别的正则表达式的,可以定义在 ~/.ctags 中,如下定义一个bash语言:
1 2 3 |
--langdef=bash --regex-bash=/^[ \t]*function[ \t]*([A-Za-z][A-Za-z0-9_-]*)[ \(]+.*/\1/f,functions/ --langmap=bash:.sh |
这样,再执行ctags -R . 的时候就可以识别含有中划线的函数了,如下:
ctags默认根据文件后缀猜错适用的语言的,如果文件没有后缀,可以强制指定适用的语言:
1 |
ctags --language-force=sh -R /usr/lib/git-core/git-flow* /usr/lib/git-core/gitflow* |
也可以通过 –languages 来指定只扫描指定的哪些语言