]> git.sev.monster Git - dotfiles.git/blob - base/.zshrc
fix for shells without OSTYPE
[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
70 ## change color based on zle vi mode
71 function zle-line-init zle-keymap-select {
72     VICOL="${${KEYMAP:/vicmd/red}:/(main|viins)/green}"
73     zle reset-prompt
74 }
75 zle -N zle-line-init
76 zle -N zle-keymap-select
77
78 ## vcs
79 autoload -Uz vcs_info
80 zstyle ':vcs_info:*' enable git
81 zstyle ':vcs_info:git*' formats       '%c%u%%F{green}%r/%b%%F{white}/%%F{yellow}%S%'"$f"
82 zstyle ':vcs_info:git*' actionformats '%%F{red}(%a)'"$f"' %c%u%%F{green}%r/%b'"$f"'/%%F{yellow}%S'"$f"
83 #zstyle ':vcs_info:git*' check-for-changes true #too slow
84 zstyle ':vcs_info:git*:.dotfiles' check-for-changes true
85 zstyle ':vcs_info:git*' check-for-staged-changes true
86 zstyle ':vcs_info:git*' stagedstr   "%F{blue}+"
87 zstyle ':vcs_info:git*' unstagedstr "%F{red}*"
88
89 unset f
90
91 ### hooks
92 local _exectime
93 function precmd {
94     # change terminal title
95     print -Pn "\e]2;%(1j,%j,)%#${SSH_CLIENT+$USER@$HOST:}%~\e\\"
96     # update vcs
97     vcs_info
98     # bell if exec takes 5s
99     if ((SECONDS - _exectime >= 5)) print "\a"
100 }
101 function preexec {
102     # change terminal title to show command
103     print -Pnf "\e]2;%s\e\\" "%#${SSH_CLIENT+$USER@$HOST:}$1"
104     # save last exec time for bell
105     _exectime=$SECONDS
106 }
107 function chpwd {
108     l
109 }
110
111 ### freebsd-specific
112 if [[ "$OSTYPE" = "freebsd" ]] {
113     ## vt binds
114     bindkey    "^[[H" beginning-of-line  #Home
115     bindkey -a "^[[H" beginning-of-line
116     bindkey    "^[[F" end-of-line        #End
117     bindkey -a "^[[F" end-of-line
118
119     ## oss sound source
120     function s { sysctl hw.snd.default_unit${1:+\=$1} }
121
122     ## install port dependencies from pkg (like pkgsrc `bmake bin-install')
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 }
134
135 # The following lines were added by compinstall
136 zstyle ':completion:*' auto-description 'specify: %d'
137 zstyle ':completion:*' expand suffix
138 zstyle ':completion:*' format '# %d'
139 zstyle ':completion:*' group-name ''
140 zstyle ':completion:*' ignore-parents parent
141 zstyle ':completion:*' insert-unambiguous false
142 zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
143 zstyle ':completion:*' list-prompt '%B%i%b'
144 zstyle ':completion:*' list-suffixes true
145 zstyle ':completion:*' matcher-list '' 'm:{[:lower:]}={[:upper:]}' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} r:|[._-]=* r:|=*' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]} l:|=* r:|=*'
146 zstyle ':completion:*' menu select=1
147 zstyle ':completion:*' original false
148 zstyle ':completion:*' select-prompt '%B%l%b'
149 zstyle ':completion:*' verbose true
150 zstyle :compinstall filename '/home/ds6/.zshrc'
151
152 autoload -Uz compinit
153 compinit
154 # End of lines added by compinstall
155
156 # vim: ts=8:sts=4:sw=4:et:tw=79
This page took 0.075435 seconds and 4 git commands to generate.