Pla*_*ato 16 zsh autocomplete kubernetes kubectl
我每天发现自己在......
$ kubectl --context=foo get pods
< copy text manually >
$ kubectl --context=foo logs dep1-12345678-10101
Run Code Online (Sandbox Code Playgroud)
我想通过匹配资源循环
$ kubectl --context=foo logs dep1<TAB>
Run Code Online (Sandbox Code Playgroud)
但这对我的库存设置似乎没有任何作用.有任何想法吗?
osx 10.12.3 kubectl v1.4.5 zsh zsh 5.2(x86_64-apple-darwin16.0)
mko*_*kho 33
无论bash
和zsh
支持,当你按下那个完成打印命令脚本<TAB>
.该功能称为可编程copmletion,您可以在此处找到有关它的更多详细信息:zsh completion.
幸运的是,您不需要编写自己的脚本 - kubectl为zsh> 5.2提供了它.尝试运行此命令:source <(kubectl completion zsh)
.
另一种选择是使用这个工具:https://github.com/mkokho/kubemrr
(discalimer:我是作者).它存在的原因是因为标准完成脚本太慢 - kubernetes集群回复可能需要几秒钟才会显示所有pod名称.但是kubemrr
在本地保留名称,因此响应几乎立即回复.
对于oh-my-zsh
,启用 kubectl 自动完成的最简单方法是在 中添加kubectl
插件~/.zshrc
:
# somewhere in your .zshrc
plugins=(git kubectl)
Run Code Online (Sandbox Code Playgroud)
尝试在 .zshrc 文件的开头添加一行
autoload -U +X compinit && compinit
Run Code Online (Sandbox Code Playgroud)
然后在下面添加另一行
source <(kubectl completion zsh)
Run Code Online (Sandbox Code Playgroud)
我想为所有使用Oh My Zsh
. 当前接受的答案使用该命令kubectl completion zsh
并将它们发送到环境。我们不这样做,而是将它们放在plugins
文件夹中,使用相同的命令,但将其修改为:
kubectl completion zsh > ~/.oh-my-zsh/custom/plugins/kubectl.plugin.zsh
现在我们必须在~/.zshrc配置中定义要在 ZSH start 上加载的插件
...
plugins=(
git
...
kubectl
)
...
Run Code Online (Sandbox Code Playgroud)
该解决方案的优点是保持配置干净。(是的,我知道这是一行,但如果你必须为 10 个插件执行此操作,那么它就会加起来!:))
归档时间: |
|
查看次数: |
10078 次 |
最近记录: |