85 lines
2.7 KiB
Bash
85 lines
2.7 KiB
Bash
# 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
|