87 lines
2.7 KiB
Bash
87 lines
2.7 KiB
Bash
# Swy7ch' config for the Zoomer Shell
|
|
# based on Luke Smith' work (lukesmith.xyz)
|
|
|
|
# Enable colors and change prompt:
|
|
autoload -U colors && colors
|
|
PS1="[ %B%{$fg[magenta]%}%(4~|%-1~/.../%2~|%~)%}%{$reset_color%} ] $%b "
|
|
|
|
# Home/End/Insert/Del keys
|
|
bindkey '^[[P' delete-char # Delete
|
|
bindkey '^[[H' beginning-of-line # Home
|
|
bindkey '^[[4~' end-of-line # End
|
|
bindkey '^[[5~' up-line-or-history # PageUp
|
|
bindkey '^[[6~' down-line-or-history # PageDown
|
|
|
|
# Git infos on the right
|
|
autoload -Uz vcs_info
|
|
precmd_vcs_info() { vcs_info }
|
|
precmd_functions+=( precmd_vcs_info )
|
|
setopt prompt_subst
|
|
RPROMPT=\$vcs_info_msg_0_
|
|
zstyle ':vcs_info:git:*' check-for-changes true
|
|
zstyle ':vcs_info:git:*' stagedstr '*'
|
|
zstyle ':vcs_info:git:*' unstagedstr '!'
|
|
zstyle ':vcs_info:git:*' formats '%F{214}%r%f %F{208}(%b): %c/%u'
|
|
zstyle ':vcs_info:*' enable git
|
|
|
|
# History in cache directory:
|
|
HISTSIZE=10000
|
|
SAVEHIST=10000
|
|
HISTFILE=~/.cache/zsh/history
|
|
|
|
# Basic auto/tab complete:
|
|
autoload -U compinit
|
|
zstyle ':completion:*' menu select
|
|
zmodload zsh/complist
|
|
compinit
|
|
_comp_options+=(globdots) # Include hidden files.
|
|
|
|
# vi mode
|
|
bindkey -v
|
|
export KEYTIMEOUT=1
|
|
|
|
# Use vim keys in tab complete menu:
|
|
bindkey -M menuselect 'h' vi-backward-char
|
|
bindkey -M menuselect 'k' vi-up-line-or-history
|
|
bindkey -M menuselect 'l' vi-forward-char
|
|
bindkey -M menuselect 'j' vi-down-line-or-history
|
|
bindkey -v '^?' backward-delete-char
|
|
|
|
# Use arrows to search through history
|
|
bindkey '^[[A' history-substring-search-up
|
|
bindkey '^[[B' history-substring-search-down
|
|
|
|
# Change cursor shape for different vi modes.
|
|
function zle-keymap-select {
|
|
if [[ ${KEYMAP} == vicmd ]] ||
|
|
[[ $1 = 'block' ]]; then
|
|
echo -ne '\e[1 q'
|
|
elif [[ ${KEYMAP} == main ]] ||
|
|
[[ ${KEYMAP} == viins ]] ||
|
|
[[ ${KEYMAP} = '' ]] ||
|
|
[[ $1 = 'beam' ]]; then
|
|
echo -ne '\e[5 q'
|
|
fi
|
|
}
|
|
zle -N zle-keymap-select
|
|
zle-line-init() {
|
|
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
|
|
echo -ne "\e[5 q"
|
|
}
|
|
zle -N zle-line-init
|
|
echo -ne '\e[5 q' # Use beam shape cursor on startup.
|
|
preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
|
|
|
|
# Load aliases and shortcuts if existent.
|
|
[ -f "$HOME/.config/aliasrc" ] && source "$HOME/.config/aliasrc"
|
|
|
|
# Load zsh-history-search
|
|
source /usr/share/zsh/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh 2>/dev/null
|
|
|
|
# Load zsh-syntax-highlighting
|
|
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 2>/dev/null
|
|
typeset -A ZSH_HIGHLIGHT_STYLES
|
|
ZSH_HIGHLIGHT_STYLES[alias]='fg=green,bold'
|
|
ZSH_HIGHLIGHT_STYLES[path]='fg=magenta,bold'
|
|
ZSH_HIGHLIGHT_STYLES[unknown-token]='bg=red,fg=white,bold'
|