zsh: big rehaul and switch to liquid prompt

This commit is contained in:
Grigory Shipunov 2021-01-03 19:03:48 +01:00
parent baf314f965
commit ee32110828
No known key found for this signature in database
GPG key ID: 77BB6C3E4771EE7C

105
.zshrc
View file

@ -1,16 +1,81 @@
# Lines configured by zsh-newuser-install setopt autocd # change directory just by typing its name
HISTFILE=~/.histfile #setopt correct # auto correct mistakes
HISTSIZE=1000 setopt interactivecomments # allow comments in interactive mode
SAVEHIST=1000 setopt magicequalsubst # enable filename expansion for arguments of the form anything=expression
setopt appendhistory setopt nonomatch # hide error message if there is no match for the pattern
bindkey -e setopt notify # report the status of background jobs immediately
# End of lines configured by zsh-newuser-install setopt numericglobsort # sort filenames numerically when it makes sense
# The following lines were added by compinstall setopt promptsubst # enable command substitution in prompt
zstyle :compinstall filename '/home/gshipunov/.zshrc'
WORDCHARS=${WORDCHARS//\/} # Don't consider certain characters part of the word
# hide EOL sign ('%')
PROMPT_EOL_MARK=""
# configure key keybindings
bindkey -e # emacs key bindings
# enable completion features
autoload -Uz compinit autoload -Uz compinit
compinit compinit -d ~/.cache/zcompdump
# End of lines added by compinstall zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # case insensitive tab completion
# History configurations
HISTFILE=~/.zsh_history
HISTSIZE=1000
SAVEHIST=2000
setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE
setopt hist_ignore_dups # ignore duplicated commands history list
setopt hist_ignore_space # ignore commands that start with space
setopt hist_verify # show command with history expansion to user before running it
#setopt share_history # share command history data
# force zsh to show the complete history
alias history="history 0"
# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# Prompt
[[ $- = *i* ]] && source $HOME/.liquidprompt
# enable color support of ls, less and man, and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias diff='diff --color=auto'
alias ip='ip --color=auto'
export LESS_TERMCAP_mb=$'\E[1;31m' # begin blink
export LESS_TERMCAP_md=$'\E[1;36m' # begin bold
export LESS_TERMCAP_me=$'\E[0m' # reset bold/blink
export LESS_TERMCAP_so=$'\E[01;33m' # begin reverse video
export LESS_TERMCAP_se=$'\E[0m' # reset reverse video
export LESS_TERMCAP_us=$'\E[1;32m' # begin underline
export LESS_TERMCAP_ue=$'\E[0m' # reset underline
# Take advantage of $LS_COLORS for completion as well
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
fi
# enable auto-suggestions based on the history
if [ -f /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ]; then
. /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
# change suggestion color
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=#999'
fi
# enable syntax highlighting
if [ -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]; then
. /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
fi
# pager # pager
export PAGER="less --quit-if-one-screen" export PAGER="less --quit-if-one-screen"
@ -20,13 +85,6 @@ autoload -z edit-command-line
zle -N edit-command-line zle -N edit-command-line
bindkey "^X^E" edit-command-line bindkey "^X^E" edit-command-line
# Prompt
if [[ -n $SSH_CONNECTION ]]; then
HOST_LBL="%F{red}[%m]%f"
fi
PROMPT="%B%(?..%F{red}[%?]%f)$HOST_LBL%(!.%F{red}[%n]%f.)%F{cyan}%~%(!.%F{red}.%F{green})%# %f%b"
#### Aliases #### Aliases
# add some color # add some color
alias grep="grep --color" alias grep="grep --color"
@ -58,10 +116,11 @@ case "$unamestr" in
alias pst="wl-paste" alias pst="wl-paste"
alias xcpy="xclip -selection clipboard" alias xcpy="xclip -selection clipboard"
alias xpst="xclip -selection clipboard -o" alias xpst="xclip -selection clipboard -o"
# use dircolors, if we have them
if [[ -f $HOME/.dir_colors ]]; then
eval $(dircolors -b $HOME/.dir_colors)
fi
;; ;;
esac esac
# hook in direnv, if it installed
if ! type "direnv" > /dev/null; then
eval "$(direnv hook zsh)"
fi
if [ -e /home/gshipunov/.nix-profile/etc/profile.d/nix.sh ]; then . /home/gshipunov/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer