]> git.sev.monster Git - dotfiles.git/blob - base/.zshrc
2486de7e66856e9d10bf8b78d4677b415ceb6976
[dotfiles.git] / base / .zshrc
1 ### options
2 setopt autocd extendedglob
3 unsetopt beep
4
5 ### history
6 setopt appendhistory
7 HISTFILE=~/.histfile
8 HISTSIZE=100
9 SAVEHIST=100
10
11 ### keys
12 bindkey -v
13 KEYTIMEOUT=1
14 ## xorg
15 bindkey    "^[[7~" beginning-of-line #Home
16 bindkey -a "^[[7~" beginning-of-line
17 bindkey    "^[[8~" end-of-line       #End
18 bindkey -a "^[[8~" end-of-line
19 bindkey    "^[[3~" delete-char       #Del
20 bindkey -a "^[[3~" delete-char
21 ## history search
22 autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
23 zle -N up-line-or-beginning-search
24 zle -N down-line-or-beginning-search
25 [[ -n "$key[Up]"   ]] && bindkey -- "$key[Up]"   up-line-or-beginning-search
26 [[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search
27
28 ### aliases
29 alias h="history -25"
30 alias j="jobs -l"
31 alias l="ls -AF"
32 alias ll="ls -lAFho"
33 ## ps
34 local p="ps -aSdxwwouser=USR -ogroup=GRP -opid,nice=N \
35          -o%cpu,%mem,tt,stat,start=START -oetime,command | ${PAGER:-more} -Se"
36 alias pa="$p"
37 alias spa="sudo $p"
38 unset p
39 ## py venv
40 alias va="source bin/activate"
41 alias vd="deactivate"
42 ## be paranoid
43 alias cp='cp -ip'
44 alias mv='mv -i'
45 if [[ "$OSTYPE" =~ '^freebsd' ]] {
46     # don't confirm if only a few files are deleted
47     alias rm='rm -I'
48 } else {
49     alias rm='rm -i'
50 }
51
52 ### prompt
53 setopt prompt_subst
54 local f=
55 #XXX: can't think of a way to tell if ssh client is on wscons, just kludge 24/7
56 #if [[ "$OSTYPE" = "netbsd" && ( "$TERM" =~ "^wsvt" || "$TERM" =~ '^vt' ) ]] {
57 #    # fix for wscons
58 #    f="%F{white}"
59 #} else {
60     f="%f"
61 #}
62 PROMPT='%F{$VICOL}%n'"$f"'@%F{$VICOL}%2m'"$f"'%(?../%F{red}$?'"$f"')%# '
63 RPROMPT='%F{yellow}${vcs_info_msg_0_:-%~}'"$f"' %T'
64
65 ## change color based on zle vi mode
66 function zle-line-init zle-keymap-select {
67     VICOL="${${KEYMAP:/vicmd/red}:/(main|viins)/green}"
68     zle reset-prompt
69 }
70 zle -N zle-line-init
71 zle -N zle-keymap-select
72
73 ## vcs
74 autoload -Uz vcs_info
75 zstyle ':vcs_info:*' enable git
76 zstyle ':vcs_info:git*' formats       '%c%u%%F{green}%r/%b%%F{white}/%%F{yellow}%S%'"$f"
77 zstyle ':vcs_info:git*' actionformats '%%F{red}(%a)'"$f"' %c%u%%F{green}%r/%b'"$f"'/%%F{yellow}%S'"$f"
78 #zstyle ':vcs_info:git*' check-for-changes true #too slow
79 zstyle ':vcs_info:git*:.dotfiles' check-for-changes true
80 zstyle ':vcs_info:git*' check-for-staged-changes true
81 zstyle ':vcs_info:git*' stagedstr   "%F{blue}+"
82 zstyle ':vcs_info:git*' unstagedstr "%F{red}*"
83
84 unset f
85
86 ### hooks
87 local _exectime=
88 function precmd {
89     # change terminal title
90     print -Pn "\e]2;%(1j,%j,)%#${SSH_CLIENT+$USER@$HOST:}%~\e\\"
91     # update vcs
92     vcs_info
93     # bell if exec takes 5s
94     if ((SECONDS - _exectime >= 5)) print "\a"
95 }
96 function preexec {
97     # change terminal title to show command
98     print -Pnf "\e]2;%s\e\\" "%#${SSH_CLIENT+$USER@$HOST:}$1"
99     # save last exec time for bell
100     _exectime=$SECONDS
101 }
102 function chpwd {
103     l
104 }
105
106 ### system-specific configs and aliases
107 case "$OSTYPE"; in
108     freebsd*)
109         ## vt binds
110         bindkey    "^[[H" beginning-of-line  #Home
111         bindkey -a "^[[H" beginning-of-line
112         bindkey    "^[[F" end-of-line        #End
113         bindkey -a "^[[F" end-of-line
114
115         ## sound
116         function s { sysctl hw.snd.default_unit${1:+\=$1} }
117         alias vol mixer
118
119         ## install port dependencies from pkg (like pkgsrc `bmake bin-install')
120         #XXX: should probably use package-depends where possible, breaks when
121         #     port name is different to package name
122         #     (eg. graphics/sdl20 == sdl2, devel/glib20 == glib2, etc)
123         function portpkg {
124             case "$1" {
125             build|run)
126                 sudo pkg install -AU $(make ${1}-depends-list |
127                            sed 's_/usr/ports/_ _' | tr -d '\n')
128                 ;;
129             *)  echo "Usage: \`portpkg <build|run>' in a port directory"
130                 return 1;;
131             }
132         };;
133     netbsd)
134         ## sound
135         function s {
136             if [[ -z "$1" ]] {
137                 ll /dev/mixer /dev/sound /dev/audio
138                 return
139             }
140             for x in mixer sound audio; do
141                 ln -sf /dev/$x"$1" /dev/$x
142             done
143         }
144         function vol {
145             if [[ -z "$1" ]] {
146                 for x in $(mixerctl -a | grep 'outputs\.master'); do
147                     echo $x
148                 done
149                 return
150             }
151             mixerctl -w outputs.master"$2"="$1"
152         };;
153 esac
154
155 # The following lines were added by compinstall
156 zstyle ':completion:*' auto-description 'specify: %d'
157 zstyle ':completion:*' expand suffix
158 zstyle ':completion:*' format '# %d'
159 zstyle ':completion:*' group-name ''
160 zstyle ':completion:*' ignore-parents parent
161 zstyle ':completion:*' insert-unambiguous false
162 zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
163 zstyle ':completion:*' list-prompt '%B%i%b'
164 zstyle ':completion:*' list-suffixes true
165 zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[._-]=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*'
166 zstyle ':completion:*' menu select=1
167 zstyle ':completion:*' original false
168 zstyle ':completion:*' select-prompt '%B%l%b'
169 zstyle ':completion:*' verbose true
170 zstyle :compinstall filename '/home/ds6/.zshrc'
171
172 autoload -Uz compinit
173 compinit
174 # End of lines added by compinstall
175
176 # vim: ts=8:sts=4:sw=4:et:tw=79
This page took 0.035807 seconds and 2 git commands to generate.