blob: 9e19ed6a28db3759e839c2195386dde20dd703b3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#!/bin/zsh
export ZSH_COMPDUMP="$XDG_CACHE_HOME/zcompdump"
# do not glob for calculator command
aliases[=]="noglob ="
# color aliases
alias ls='ls --color=auto'
alias grep='grep --color=auto'
# completion
autoload -U compinit
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
zstyle ':completion:*:*:*:*:*' menu select
zstyle ':completion:*' matcher-list 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' 'r:|=*' 'l:|=* r:|=*'
zstyle ':completion:*' special-dirs true
setopt auto_menu
setopt complete_in_word
setopt always_to_end
compinit -d "$ZSH_COMPDUMP"
# keybinds
bindkey -e # emacs bindings
bindkey '^[[Z' reverse-menu-complete
# prompt
unset PROMPT
setopt PROMPT_SUBST
prompt_segment() {
content="$1"
[ -z "$content" ] && return
echo "%{\e[90m%}${content}%{\e[30m%} -> %{\e[0m%}"
}
prompt_mod_git_info() {
git rev-parse --is-inside-work-tree 1> /dev/null 2> /dev/null || return
prompt_segment "git $(git rev-parse --abbrev-ref HEAD)"
}
# only display hostname in prompt if connected over SSH
[ -n "$SSH_CLIENT" ] && PROMPT+="$(prompt_segment '%m')"
# working directory
PROMPT+="$(prompt_segment '%c')"
# git info (if in repo)
PROMPT+="\$(prompt_mod_git_info)"
|