-
Notifications
You must be signed in to change notification settings - Fork 5
/
zshrc
178 lines (160 loc) · 5.41 KB
/
zshrc
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# vim: set et sts=4 ts=4 sw=4 tw=78
# Lines configured by zsh-newuser-install
HISTFILE=~/.zsh_history
HISTSIZE=50000
SAVEHIST=100000
setopt appendhistory autocd extendedglob
# End of lines configured by zsh-newuser-install
# Use modern completion system
zstyle :compinstall filename '$HOME/.zshrc'
autoload -Uz compinit
fpath=(~/.zsh/completion $fpath /usr/share/zsh/site-functions)
compinit
unsetopt menu_complete
unsetopt flow_control
setopt auto_menu
setopt complete_in_word
setopt always_to_end
zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
if which dircolors > /dev/null; then
eval "$(dircolors -b)"
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
fi
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,ppid,%cpu,tty,cputime,command'
setopt EXTENDED_HISTORY
setopt INC_APPEND_HISTORY_TIME
setopt HIST_EXPIRE_DUPS_FIRST
setopt HIST_IGNORE_DUPS
setopt HIST_IGNORE_SPACE
setopt HIST_SAVE_NO_DUPS
setopt HIST_REDUCE_BLANKS
setopt HIST_VERIFY
setopt HIST_BEEP
setopt INTERACTIVE_COMMENTS
# Sunrise theme for oh-my-zsh
# Intended to be used with Solarized: http://ethanschoonover.com/solarized
# Color shortcuts
R=$fg_no_bold[red]
G=$fg_no_bold[green]
M=$fg_no_bold[magenta]
Y=$fg_no_bold[yellow]
B=$fg_no_bold[blue]
RESET=$reset_color
if [ "$USER" = "root" ]; then
PROMPTCOLOR="%{$R%}" PROMPTPREFIX="-!-";
else
PROMPTCOLOR="" PROMPTPREFIX="---";
fi
local return_code="%(?..%{$R%}%? ↵%{$RESET%})"
# %B sets bold text
PROMPT="%B$PROMPTPREFIX %2~ %{$M%}%B»%b%{$RESET%} "
RPS1="${return_code}"
# End theme
# Up & down arrows search history from beginning of the line
# See https://superuser.com/a/585004 for reference
autoload -U up-line-or-beginning-search
autoload -U down-line-or-beginning-search
zle -N up-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "^[[A" up-line-or-beginning-search
bindkey "^[[B" down-line-or-beginning-search
# Edit command line
autoload -U edit-command-line
zle -N edit-command-line
bindkey -M vicmd v edit-command-line
# Additional search mapping for vi mode
bindkey -M vicmd '?' history-incremental-search-backward
bindkey -M vicmd '/' history-incremental-search-forward
bindkey -M vicmd "k" up-line-or-beginning-search
bindkey -M vicmd "j" down-line-or-beginning-search
# Common emacs bindings for vi mode
bindkey '\e[3~' delete-char
bindkey '^A' beginning-of-line
bindkey '^E' end-of-line
bindkey '^R' history-incremental-pattern-search-backward
bindkey '\e.' insert-last-word
# Tmux home/end
bindkey '\e[1~' beginning-of-line
bindkey '\e[4~' end-of-line
# Urxvt
bindkey '\e[7~' beginning-of-line
bindkey '\e[8~' end-of-line
# user-friendly command output
alias ls='ls -Fv'
export CLICOLOR=1
ls --color=auto &> /dev/null && alias ls='ls --color=auto -Fv'
alias lsnc='ls --color=none -Fv'
alias grep="grep --color"
# PATH helper functions from http://superuser.com/questions/408912
# is $1 missing from $2 (or PATH) ?
no_path() {
eval "case :\$${2-PATH}: in *:$1:*) return 1;; *) return 0;; esac"
}
# if $1 exists and is not in path, append it
add_path () {
[ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
}
# if $1 is in path, remove it
del_path () {
no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: |
sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`
}
# if $1 exists and is not in path, prepend it
pre_path () {
del_path $1
[ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
}
pre_path "$HOME/bin"
pre_path "$HOME/.local/bin"
pre_path "$HOME/Library/Python/3.9/bin"
pre_path "$HOME/.pyenv/bin"
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
export PATH
export EDITOR=vim
export VISUAL=vim
export LESS="IFRSX"
AGENT_SOCK="$(gpgconf --list-dirs agent-socket)"
if [[ ! -S $AGENT_SOCK ]]; then
gpg-agent --daemon &>/dev/null
fi
export GPG_TTY=$TTY
# Set SSH to use gpg-agent if it's enabled
GNUPGCONFIG="${GNUPGHOME:-"$HOME/.gnupg"}/gpg-agent.conf"
if [[ -r $GNUPGCONFIG ]] && command grep -q enable-ssh-support "$GNUPGCONFIG"; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
unset SSH_AGENT_PID
fi
# A way to get IP addresses {
# http://stackoverflow.com/a/13322549/359059
alias myip="ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'"
# }
# jlilja.net {
alias jln_etatuki="ssh -L 5900:localhost:7000 [email protected]"
# }
openssl_check_dates() {
echo -n | openssl s_client -servername $1 -connect $1:443 2>/dev/null | openssl x509 -noout -dates
}
duh() {
find "$1" -mindepth 1 -maxdepth 1 -exec du -sh "{}" \; | sort -h
}
body() {
IFS= read -r header
printf '%s\n' "$header"
"$@"
}
type open >/dev/null || open() {
(xdg-open "$@" &>/dev/null &)
}