# 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 #autoload -U colors #colors #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 " autoload -U colors colors PROMPT="%{$fg_bold[yellow]%}%* %{%(3L.$fg_bold[red]%L .)%}%{$fg_bold[blue]%}%d %(?.$fg_bold[green]✓.$fg_bold[red]%?) %{%(?.$fg_bold[green].$fg_bold[red])%}%%%{$reset_color%} " source $HOME/.config/.aliases source $HOME/.config/.aliases.local # plugins source $HOME/.config/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.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 -gt 3 ]]; then _chpwd fi # restore last saved path on launch if [[ -f ~/.last_dir ]]; then cd $(cat ~/.last_dir) fi function chpwd { _chpwd } # 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 # If no SSH agent is active, start keychain if [[ -z "$SSH_AUTH_SOCK" ]]; then eval "$(keychain --eval --quiet --agents ssh,gpg id_rsa)" fi