如何在zsh上编辑ssh的命令完成?

如何在zsh上编辑ssh的命令完成?,第1张

概述我想在zsh上设置命令完成,以便在输入后显示主机名 ssh [TAB] 从我的.ssh / config文件中取出名称(最好是来自known_hosts和/ etc / hosts以及其他任何有意义的文件)并显示一个列表. 它目前正在做一些,但是 >它根本不使用.ssh / config >它首先需要用户名,即使使用.ssh / config也不需要输入用户名 >它提供了多个列表(可能是一个来自k 我想在zsh上设置命令完成,以便在输入后显示主机名
ssh [TAB]

从我的.ssh / config文件中取出名称(最好是来自kNown_hosts和/ etc / hosts以及其他任何有意义的文件)并显示一个列表.

它目前正在做一些,但是

>它根本不使用.ssh / config
>它首先需要用户名,即使使用.ssh / config也不需要输入用户名
>它提供了多个列表(可能是一个来自kNown_hosts,另一个来自/ etc / hosts,但我还没有验证过)

所以我希望在输入ssh [TAB]后在(最好是单个)列表中包含已知的用户名和已知的主机名

(我来谷歌之前是因为1)它会导致答案存储在这里,2)它可能更有效率.如果没有其他人回答,我会找到答案.)

解决方法 这是我的.zshrc中的相关部分.它自2002年以来没有改变,所以今天我可能会用不同的方式编写它,但它仍然可以从〜/ .ssh / config和〜/ .ssh / kNown_hosts完成主机名(如果HashKNownHosts关闭 – 它不存在于那些天).
h=()if [[ -r ~/.ssh/config ]]; then  h=($h ${${${(@M)${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})fiif [[ -r ~/.ssh/kNown_hosts ]]; then  h=($h ${${${(f)"$(cat ~/.ssh/kNown_hosts{,2} || true)"}%%\ *}%%,*}) 2>/dev/nullfiif [[ $#h -gt 0 ]]; then  zstyle ':completion:*:ssh:*' hosts $h  zstyle ':completion:*:slogin:*' hosts $hfi
总结

以上是内存溢出为你收集整理的如何在zsh上编辑ssh的命令完成?全部内容,希望文章能够帮你解决如何在zsh上编辑ssh的命令完成?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1043432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存