[英]Using bash function + grc like an alias breaks Zsh completion
我正在使用grc / grcat使用此函数为终端输出着色:
function docker() {
case $* in
ps* ) shift 1; command docker ps "$@" | grcat $HOME/.grc/conf.dockerps ;;
images* ) shift 1; command docker images "$@" | grcat $HOME/.grc/conf.dockerimages ;;
info* ) shift 1; command docker info "$@" | grcat $HOME/.grc/conf.dockerinfo ;;
* ) command docker "$@" ;;
esac
}
但这打破了我在我的.zshrc中使用oh-my-zsh设置的zsh完成和插件:
plugins=(git colored-man-pages colorize vagrant brew ruby docker)
plugins+=(gradle rvm rails bundler gem osx pod)
plugins+=(bower cp go node npm)
plugins+=(zsh-syntax-highlighting encode64)
plugins+=(zsh-completions mvn)
fpath=(~/.zsh/completion $fpath)
autoload -Uz compinit && compinit -i
当我尝试使用docker stop
,完成将使用ANSI转义序列: $'\\033'\\[0m$'\\033'\\[1m$'\\033'\\[33mhigh_wright$'\\033'\\[0m
有没有办法避免这种情况,并仅为完成过滤那些转义序列?
编辑
我在我的.oh-my-zsh目录中找到了这个文件,用于docker插件: https : //github.com/robbyrussell/oh-my-zsh/blob/master/plugins/docker/_docker
我明白我需要改变这个功能,但我不知道怎么做。
__docker_containers() {
declare -a cont_cmd
cont_cmd=($(docker ps | awk 'NR>1{print $NF":[CON("$1")"$2"("$3")]"}'))
if [[ 'X$cont_cmd' != 'X' ]]
_describe 'containers' cont_cmd
}
我能够通过更改安装在.oh-my-zsh/plugins/docker/_docker
oh-my-zsh的.oh-my-zsh/plugins/docker/_docker
来解决这个.oh-my-zsh/plugins/docker/_docker
。 要修复它,我在所有辅助函数之前使用如下command
:
__docker_containers() {
declare -a cont_cmd
cont_cmd=($(command docker ps | awk 'NR>1{print $NF":[CON("$1")"$2"("$3")]"}'))
if [[ 'X$cont_cmd' != 'X' ]]
_describe 'containers' cont_cmd
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.