gnu / make 支持makefile中的非拉丁语标识符(f.e.,targets)。
示例:
$ cat GNUmakefile
test:
@echo test
тест:
@echo test in russian
$ make test тест
test
test in russian
但是此示例中的 bash-completion 只完成了一个目标 - test
:
“make”+ tab →“make test”。
如何将非拉丁目标添加到完成列表中?
使用不同版本的 bash-completion 在各种发行列表(debian 5-8,ubuntu 12-15,centos 5-6,mandriva 2008)上进行了测试。
至少在最近版本的 bash-completion 中我需要支持此功能。
答案 0 :(得分:4)
我找到了解决方案。
来自文件_make_target_extract_script
的函数/usr/share/bash-completion/completions/make
中的错误,该文件返回 sed -script,其中包含以下行:
/^[^a-zA-Z0-9]/ d # convention for hidden tgt
删除以非拉丁字符开头(特别是)的目标。
在我看来,这样的正则表达式会更合适(见this):/^[^[[:alnum:]]]/ d # convention for hidden tgt
如果您无法修改/usr/share/bash-completion/completions/make
,则可以添加~/.bashrc
这样的行(基于this answer):
_completion_loader make
eval "$(type _make_target_extract_script | sed '1d;s/a-zA-Z0-9/[[:alnum:]]/')"
<强>更新强>
我提交bug report(不幸的是,需要注册)。
答案 1 :(得分:1)