git 高级别名完成
git advanced alias completion
我的 .gitconfig 文件中有 advanced 别名,我希望它支持制表符补全。
例如,这个简单的别名允许 refs 的制表符补全(假设 git 补全已被获取):
[alias]
co = checkout
然而,这不是:
[alias]
co = "!f() { git checkout \"${@}\"; }; f}"
有什么方法可以为这些别名添加对制表符补全的支持吗?
事实证明,至少从 git v2.1.0 开始,就可以添加 tab-completion 对“复杂别名”的支持。每 git-completion.bash:
# If you use complex aliases of form '!f() { ... }; f', you can use the null
# command ':' as the first command in the function body to declare the desired
# completion style. For example '!f() { : git commit ; ... }; f' will
# tell the completion to use commit completion. This also works with aliases
# of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '".
因此,这有效:
co = "!f() { : git checkout ; git checkout \"${@}\"; }; f}"
请注意,模式 !f
很重要。这不起作用:! f
(插入space,尽管函数名称并不重要)。
我的 .gitconfig 文件中有 advanced 别名,我希望它支持制表符补全。
例如,这个简单的别名允许 refs 的制表符补全(假设 git 补全已被获取):
[alias]
co = checkout
然而,这不是:
[alias]
co = "!f() { git checkout \"${@}\"; }; f}"
有什么方法可以为这些别名添加对制表符补全的支持吗?
事实证明,至少从 git v2.1.0 开始,就可以添加 tab-completion 对“复杂别名”的支持。每 git-completion.bash:
# If you use complex aliases of form '!f() { ... }; f', you can use the null
# command ':' as the first command in the function body to declare the desired
# completion style. For example '!f() { : git commit ; ... }; f' will
# tell the completion to use commit completion. This also works with aliases
# of form "!sh -c '...'". For example, "!sh -c ': git commit ; ... '".
因此,这有效:
co = "!f() { : git checkout ; git checkout \"${@}\"; }; f}"
请注意,模式 !f
很重要。这不起作用:! f
(插入space,尽管函数名称并不重要)。