# fixing emacs TRAMP [[ $TERM == "dumb" ]] && unsetopt zle && PS1='$ ' && return setopt interactivecomments # allow comments in interactive mode setopt magicequalsubst # enable filename expansion for arguments of the form ‘anything=expression’ setopt nonomatch # hide error message if there is no match for the pattern setopt notify # report the status of background jobs immediately setopt numericglobsort # sort filenames numerically when it makes sense setopt promptsubst # enable command substitution in prompt # configure key keybindings bindkey -e # emacs key bindings # enable completion features autoload -Uz compinit compinit -d ~/.cache/zcompdump 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" # 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 export PAGER="less --quit-if-one-screen" # Edit the command in editor autoload -z edit-command-line zle -N edit-command-line bindkey "^X^E" edit-command-line #### Aliases # add some color alias grep="grep --color" alias ls="ls --color=auto" zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} # ls shorthand alias ll="ls -h -l" alias l="ls -h -l -A" alias l.="ls -d .*" # platform-specific config unamestr=$(uname 2> /dev/null) case "$unamestr" in "Darwin") alias ls="ls -G" # macos ls is weird alias o="open" alias cpy="pbcopy" alias pst="pbpaste" export HOMEBREW_NO_AUTO_UPDATE=1 ;; "Linux") alias o="xdg-open" alias cpy="wl-copy" alias pst="wl-paste" alias xcpy="xclip -selection clipboard" alias xpst="xclip -selection clipboard -o" ;; esac # hook in direnv, if it installed if type "direnv" > /dev/null; then eval "$(direnv hook zsh)" fi if [[ -v SSH_CLIENT ]] || [[ -v SSH_TTY ]]; then; export PS1="%B>>> %F{cyan}%n%F{magenta}@%m%F{reset}:%F{green}%~%F{reset}%#%b " else export PS1="%B>>> %F{cyan}%n@%m%F{reset}:%F{green}%~%F{reset}%#%b " fi