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
それを回避し、これらのエスケープ シーケンスを補完のみにフィルター処理する方法はありますか?
編集
docker プラグインの .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
}