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