Remove colors from zsh tab-completion
5,086
With pure zsh:
zstyle ':completion:*' list-colors
Conversely, to use the same colors as the ls
command:
eval "$(dircolors)"
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
This should work even with oh-my-zsh, but oh-my-zsh sometimes has its own way of doing things and I haven't tested with oh-my-zsh.
Related videos on Youtube
Author by
kadekai
Updated on September 18, 2022Comments
-
kadekai over 1 year
I don't want to see colors in the suggestions of zsh tab-completion. They make the reading harder for me. How can I do that?
Here is my
.zshrc
:# _ # _______| |__ # |_ / __| _ \ # / /\__ \ | | | # /___|___/_| |_| # # install oh-my-zsh [ ! -d ~/.oh-my-zsh ] && git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh # install zsh-autosuggestion autosuggestions="/home/enan/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh" [ ! -f "$autosuggestions" ] && git clone https://github.com/zsh-users/zsh-autosuggestions $HOME/.zsh/zsh-autosuggestions [ -f "$autosuggestions" ] && source "/home/enan/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh" # oh-my-zsh config export ZSH=/home/enan/.oh-my-zsh ZSH_THEME="" DISABLE_LS_COLORS="true" DISABLE_AUTO_TITLE="true" export UPDATE_ZSH_DAYS=13 source $ZSH/oh-my-zsh.sh plugins=( git ) bindkey '^P' up-line-or-beginning-search bindkey '^N' down-line-or-beginning-search # Personal customization BASE16_SHELL=$HOME/.config/base16-shell/ [ -n "$PS1" ] && [ -s $BASE16_SHELL/profile_helper.sh ] && eval "$($BASE16_SHELL/profile_helper.sh)" executables="/home/enan/Executables/bin" [ -d "$executables" ] && [[ ":$PATH:" != *$executables* ]] && export PATH=$executables:${PATH} # FZF settings [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh export FZF_DEFAULT_OPTS='--height 100% ' alias ls='ls -CF --color=none' alias ll='ls -AlF' alias la='ls -AF' alias refresh='source ~/.zshrc' alias screenfetch='screenfetch -t' alias i3lock='sh ~/Git-repos/dotFiles/lock.sh' alias emacs='emacs -nw' alias v='nvim' alias py2=python2 alias py3=python3 alias t='sh ~/Git-repos/dotFiles/tmux.sh' # zsh prompt with git info git_branch() { git branch --no-color 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ \1/' } git_status() { # + changes are staged and ready to commit # ! unstaged changes are present # ? untracked files are present # $ changes have been stashed # ↑ local commits need to be pushed to the remote local state="$(git status --porcelain 2>/dev/null)" local output='[' [[ -n $(egrep '^[MADRC]' <<<"$state") ]] && output="$output+" [[ -n $(egrep '^.[MD]' <<<"$state") ]] && output="$output!" [[ -n $(egrep '^\?\?' <<<"$state") ]] && output="$output?" [[ -n $(git stash list) ]] && output="$output$" [[ -n $(git log --branches --not --remotes) ]] && output="$output↑" [[ -n $output ]] && output="$output]" echo $output } git_prompt() { # First, get the branch name... local branch=$(git_branch) # Empty output? Then we're not in a Git repository, so bypass the rest # of the function, producing no output if [[ -n $branch ]]; then local state=$(git_status) # Now output the actual code to insert the branch and status if [ $state = '[]' ]; then echo -e " $branch" else echo -e " $branch %{$fg_bold[red]%}$state" fi fi } PROMPT='%{$fg[blue]%}[%n@%m] %{$fg[magenta]%}%c%{$fg[yellow]%}$(git_prompt) %(?:%{$fg[green]%}❯ :%{$fg[red]%}❯ )%{$reset_color%}'
and a screenshot:
Look at the left pane last command
cd <tab>
of the terminal in the screenshot.-
Arpit Agarwal almost 6 yearsadd some screenshot and your zshrc
-
Gilles 'SO- stop being evil' almost 6 yearsDon't post links to external sites. Put the code directly in your question (use the
{}
button) and insert the image inline (use the button to the right of the{}
button), like I did for you. -
kadekai almost 6 yearsOh, sorry and thank you who fixed it for me.
-
-
kadekai almost 6 yearsThanks, your first suggestion worked exactly how I wanted. But I didn't understand your second suggestion, and it didn't work. I don't have any LS_COLORS variables in my .zshrc, as you can see. Could you edit your answer and explain a bit?
-
Gilles 'SO- stop being evil' almost 6 years@EnanAjmain
dircolors
prints some output that containsLS_COLORS=…
. I see in your screenshot that you don't color thels
output, so you wouldn't want to calldircolors
, but I'll leave that in my answer because it would help others who don't like the colors they're getting in zsh but do like the ones they're getting from ls. -
Admin almost 2 yearsThe first command works for me with oh-my-zsh, fwiw.