143 lines
4.7 KiB
Bash
143 lines
4.7 KiB
Bash
# Lines configured by zsh-newuser-install
|
|
HISTFILE=~/.histfile
|
|
HISTSIZE=10000
|
|
SAVEHIST=10000
|
|
setopt autocd autopushd extendedglob nomatch notify pushdminus
|
|
unsetopt beep
|
|
bindkey -v
|
|
# End of lines configured by zsh-newuser-install
|
|
# The following lines were added by compinstall
|
|
|
|
zstyle ':completion:*' completer _expand _complete _ignored _approximate
|
|
zstyle ':completion:*' list-colors ''
|
|
zstyle ':completion:*' menu select=long-list select=0
|
|
zstyle ':completion:*' original true
|
|
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
|
|
zstyle :compinstall filename '${HOME}/.zshrc'
|
|
|
|
autoload -Uz compinit
|
|
compinit
|
|
# End of lines added by compinstall
|
|
|
|
REPORTTIME=5
|
|
|
|
PROMPT="%B%F{yellow}%*%f %F{blue}%d%f %(?.%F{green}✓%f.%F{red}%?%f)
|
|
%(3L.%F{red}%L%f .)%(?.%F{green}.%F{red})%%%f%b "
|
|
|
|
source $HOME/.config/.aliases
|
|
source $HOME/.config/.aliases.local
|
|
|
|
source $HOME/.config/zsh/key-bindings.zsh
|
|
# plugins
|
|
source $HOME/.config/zsh/plugins/fast-syntax-highlighting/F-Sy-H.plugin.zsh
|
|
source $HOME/.config/zsh/plugins/fzf-git.sh/fzf-git.sh
|
|
source $HOME/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh
|
|
|
|
#fzf
|
|
eval "$(fzf --zsh)"
|
|
|
|
# tmux
|
|
if [ -x "$(command -v tmux)" ] && [ -n "${DISPLAY}" ] && [ -z "${TMUX}" ] && [ -z "${NOTMUX}" ]; then
|
|
tmux || tmux >/dev/null 2>&1
|
|
fi
|
|
|
|
# key bindings according to https://wiki.archlinux.org/title/Zsh#Key_bindings
|
|
typeset -g -A key
|
|
|
|
key[Home]="${terminfo[khome]}"
|
|
key[End]="${terminfo[kend]}"
|
|
key[Insert]="${terminfo[kich1]}"
|
|
key[Backspace]="${terminfo[kbs]}"
|
|
key[Delete]="${terminfo[kdch1]}"
|
|
key[Up]="${terminfo[kcuu1]}"
|
|
key[Down]="${terminfo[kcud1]}"
|
|
key[Left]="${terminfo[kcub1]}"
|
|
key[Right]="${terminfo[kcuf1]}"
|
|
key[PageUp]="${terminfo[kpp]}"
|
|
key[PageDown]="${terminfo[knp]}"
|
|
key[Shift-Tab]="${terminfo[kcbt]}"
|
|
key[Control-Left]="${terminfo[kLFT5]}"
|
|
key[Control-Right]="${terminfo[kRIT5]}"
|
|
|
|
[[ -n "${key[Home]}" ]] && bindkey -- "${key[Home]}" beginning-of-line
|
|
[[ -n "${key[End]}" ]] && bindkey -- "${key[End]}" end-of-line
|
|
[[ -n "${key[Insert]}" ]] && bindkey -- "${key[Insert]}" overwrite-mode
|
|
[[ -n "${key[Backspace]}" ]] && bindkey -- "${key[Backspace]}" backward-delete-char
|
|
[[ -n "${key[Delete]}" ]] && bindkey -- "${key[Delete]}" delete-char
|
|
[[ -n "${key[Up]}" ]] && bindkey -- "${key[Up]}" up-line-or-history
|
|
[[ -n "${key[Down]}" ]] && bindkey -- "${key[Down]}" down-line-or-history
|
|
[[ -n "${key[Left]}" ]] && bindkey -- "${key[Left]}" backward-char
|
|
[[ -n "${key[Right]}" ]] && bindkey -- "${key[Right]}" forward-char
|
|
[[ -n "${key[PageUp]}" ]] && bindkey -- "${key[PageUp]}" beginning-of-buffer-or-history
|
|
[[ -n "${key[PageDown]}" ]] && bindkey -- "${key[PageDown]}" end-of-buffer-or-history
|
|
[[ -n "${key[Shift-Tab]}" ]] && bindkey -- "${key[Shift-Tab]}" reverse-menu-complete
|
|
|
|
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then
|
|
autoload -Uz add-zle-hook-widget
|
|
function zle_application_mode_start { echoti smkx }
|
|
function zle_application_mode_stop { echoti rmkx }
|
|
add-zle-hook-widget -Uz zle-line-init zle_application_mode_start
|
|
add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop
|
|
fi
|
|
|
|
# custom key bindings
|
|
bindkey "^[b" backward-word # Alt + b
|
|
bindkey "^[f" forward-word # Alt + f
|
|
bindkey "^A" beginning-of-line # Ctrl + a
|
|
bindkey "^E" end-of-line # Ctrl + e
|
|
bindkey "^K" kill-line # Ctrl + k
|
|
bindkey "^U" backward-kill-line # Ctrl + u
|
|
|
|
# save path on cd (chpwd is a zsh hook) and spawned subshell
|
|
function chpwd {
|
|
pwd > ~/.last_dir
|
|
}
|
|
|
|
if [[ $SHLVL -ge 3 ]]; then
|
|
chpwd
|
|
fi
|
|
|
|
# restore last saved path on launch
|
|
if [[ -f ~/.last_dir ]]; then
|
|
cd $(cat ~/.last_dir)
|
|
fi
|
|
|
|
# save path on quiting nnn (and alias it to 'n')
|
|
function n {
|
|
# Block nesting of nnn in subshells
|
|
if [ -n $NNNLVL ] && [ "${NNNLVL:-0}" -ge 1 ]; then
|
|
echo "nnn is already running"
|
|
return
|
|
fi
|
|
|
|
# The default behaviour is to cd on quit (nnn checks if NNN_TMPFILE is set)
|
|
# To cd on quit only on ^G, remove the "export" as in:
|
|
# NNN_TMPFILE="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd"
|
|
# NOTE: NNN_TMPFILE is fixed, should not be modified
|
|
export NNN_TMPFILE="${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd"
|
|
|
|
# Unmask ^Q (, ^V etc.) (if required, see `stty -a`) to Quit nnn
|
|
# stty start undef
|
|
# stty stop undef
|
|
# stty lwrap undef
|
|
# stty lnext undef
|
|
|
|
nnn "$@"
|
|
|
|
if [ -f "$NNN_TMPFILE" ]; then
|
|
. "$NNN_TMPFILE"
|
|
rm -f "$NNN_TMPFILE" > /dev/null
|
|
fi
|
|
}
|
|
|
|
# cd to $PWD of exited subshell in nnn
|
|
function nnn_cd {
|
|
if ! [ -z "$NNN_PIPE" ]; then
|
|
printf "%s\0" "0c${PWD}" > "${NNN_PIPE}" !&
|
|
fi
|
|
}
|
|
|
|
trap nnn_cd EXIT
|
|
|
|
eval `keychain --eval --quiet --agents ssh,gpg id_rsa`
|