# Filename : ~/.zshrc # Purpose : setup file for zsh # Author : Jeffrey Serio # Homepage : https://hyperreal.coffee # # Zsh Manual - https://zsh-manual.netlify.app # Zsh Guide - https://zsh-guide.netlify.app # # ,----[ man -k zsh ] # | # | zsh (1) - the Z shell # | zshall (1) - the Z shell meta-man page # | zshbuiltins (1) - zsh builtin commands # | zshcalsys (1) - zsh calendar system # | zshcompctl (1) - zsh programmable completion # | zshcompsys (1) - zsh completion system # | zshcompwid (1) - zsh completion widgets # | zshcontrib (1) - user contributions to zsh # | zshexpn (1) - zsh expansion and substitution # | zshmisc (1) - everything and then some # | zshmodules (1) - zsh loadable modules # | zshoptions (1) - zsh options # | zshparam (1) - zsh parameters # | zshroadmap (1) - informal introduction to the zsh manual # | zshtcpsys (1) - zsh tcp system # | zshzftpsys (1) - zftp function front-end # | zshzle (1) - zsh command line editor # `---- # # Zsh startup sequence # 1) /etc/zshenv -> Always run for every zsh. (login + interactive + other) # 2) ~/.zshenv -> Usually run for every zsh. (login + interactive + other) # 3) /etc/zprofile -> Run for login shells. (login) # 4) ~/.zprofile -> Run for login shells. (login) # 5) /etc/zshrc -> Run for interactive shells. (login + interactive) # 6) ~/.zshrc -> Run for interactive shells. (login + interactive) # 7) /etc/zlogin -> Run for login shells. (login) # 8) ~/.zlogin -> Run for login shells. (login) # # This file is based on Christian Schneider's zsh configuration # https://www.strcat.de/dotfiles # Load Homebrew if test -d "/home/linuxbrew"; then eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" fi # Plugins if ! test -f ~/.zplug/init.zsh; then export ZPLUG_HOME=~/.zplug git clone https://github.com/zplug/zplug $ZPLUG_HOME fi source ~/.zplug/init.zsh # Use autosuggestions when typing commands zplug "zsh-users/zsh-autosuggestions" # Use a keybinding to complete parts of command from the history file zplug "zsh-users/zsh-history-substring-search" # Use syntax highlighting when typing commands zplug "zsh-users/zsh-syntax-highlighting", defer:2 # Press escape twice to prepend `sudo` to the command line zplug "plugins/sudo", from:oh-my-zsh # extract archives zplug "plugins/extract", from:oh-my-zsh # systemd aliases zplug "plugins/systemd", from:oh-my-zsh # bookmarks zplug "zpm-zsh/zshmarks" # Load file from ~/.zshrc.d zplug "~/.zshrc.d", from:local, use:'*' if ! zplug check; then zplug install; exec $SHELL $SHELL_ARGS "$@" fi zplug load # ----------------------------------------------------------------------------- # ENVIRONMENT VARS # ----------------------------------------------------------------------------- export SHELL=/usr/bin/zsh export DOOMDIR="${HOME}/shared/doom" export LS_COLORS=$(vivid generate catppuccin-mocha) export PAGER="less -X" export MANWIDTH="88" export MANROFFOPT="-c" export MANPAGER="less -X" if test -x "$(command -v emacs)"; then EDITOR="emacs" else EDITOR="nvim" fi export EDITOR # Have less display colours # from: https://wiki.archlinux.org/index.php/Color_output_in_console#man export LESS_TERMCAP_mb=$'\e[1;31m' # begin bold export LESS_TERMCAP_md=$'\e[1;34m' # begin blink export LESS_TERMCAP_so=$'\e[01;0;33m' # begin reverse video export LESS_TERMCAP_us=$'\e[01;31m' # begin underline export LESS_TERMCAP_me=$'\e[0m' # reset bold/blink export LESS_TERMCAP_se=$'\e[0m' # reset reverse video export LESS_TERMCAP_ue=$'\e[0m' # reset underline export GROFF_NO_SGR=1 # for konsole and gnome-terminal # HISTSIZE is the number of lines of history that is kept within any given # running zsh instance. SAVEHIST is the number of lines of history that is # written out to the HISTFILE when that event occurs. If you use the # HIST_EXPIRE_DUPS_FIRST option, setting this value larger than the SAVEHIST # size will give you the difference as a cushion for saving duplicated history # events. HISTSIZE=100000 SAVEHIST=65536 # Name of the file used to store command history HISTFILE=~/.zsh_history # Language export LANG="en_US.UTF-8" # Manpages export MANPATH="${MANPATH:-/usr/share/man:/usr/local/share/man}" if [ -d "${HOME}/.fzf/man" ]; then export MANPATH="${MANPATH}:${HOME}/.fzf/man" fi # Bat theme export BAT_THEME="Catppuccin Mocha" # Automatically remove duplicates from these arrays typeset -gU path cdpath manpath fpath # compatibility with vterm-buffer-name-string in Emacs autoload -U add-zsh-hook add-zsh-hook -Uz chpwd() { print -Pn "\e]2;%m:%2~\a" } # starship.rs eval "$(starship init zsh)" # direnv eval "$(direnv hook zsh)"