2016-06-11 20 views
1

我使用GRC/grcat上色這個功能我端子輸出:使用bash功能+ GRC像一個別名打破巖組完成

function docker() { 
    case $* in 
    ps*) shift 1; command docker ps "[email protected]" | grcat $HOME/.grc/conf.dockerps ;; 
    images*) shift 1; command docker images "[email protected]" | grcat $HOME/.grc/conf.dockerimages ;; 
    info*) shift 1; command docker info "[email protected]" | grcat $HOME/.grc/conf.dockerinfo ;; 
    *) command docker "[email protected]" ;; 
    esac 
} 

但是這打破了我的zsh完成和插件,我安裝使用哦,MY-的zsh在我的.zshrc本:

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中的泊塢窗插件目錄: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 
} 

回答

0

我能夠從安裝在.oh-my-zsh/plugins/docker/_docker哦,我-zsh的改變泊塢窗插件來解決這個問題。爲了解決這個問題,我在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 
}