簡體   English   中英

使用bash函數+ grc就像一個別名打破Zsh完成

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM