You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
260 lines
7.0 KiB
Bash
260 lines
7.0 KiB
Bash
# Don't show input while loading
|
|
stty -echo
|
|
|
|
# some better colors for ls
|
|
eval "`dircolors ~/.dircolors`"
|
|
|
|
# Keybindings {{{
|
|
bindkey -e
|
|
bindkey '\e[1~' beginning-of-line
|
|
bindkey '\e[4~' end-of-line
|
|
bindkey '\e[3~' delete-char
|
|
bindkey '\e[2~' overwrite-mode
|
|
bindkey "^[[7~" beginning-of-line # Pos1
|
|
bindkey "^[[8~" end-of-line # End
|
|
bindkey "^[[A" history-beginning-search-backward
|
|
bindkey "^[[B" history-beginning-search-forward
|
|
|
|
# add edit command line feature ("alt-e")
|
|
autoload edit-command-line
|
|
zle -N edit-command-line
|
|
bindkey '\ee' edit-command-line
|
|
|
|
# }}}
|
|
# Variables {{{
|
|
export EDITOR=vim
|
|
export VISUAL=$EDITOR
|
|
export PAGER=less
|
|
|
|
export LESSCHARSET="UTF-8"
|
|
export LESSOPEN='|/usr/bin/lesspipe.sh %s 2>&-'
|
|
export LESS='-i -n -w -M -R -P%t?f%f \
|
|
:stdin .?pb%pb\%:?lbLine %lb:?bbByte %bb:-...'
|
|
|
|
# Less Colors for Man Pages
|
|
export LESS_TERMCAP_mb=$'\E[01;31m' # begin blinking
|
|
export LESS_TERMCAP_md=$'\E[01;38;5;74m' # begin bold
|
|
export LESS_TERMCAP_me=$'\E[0m' # end mode
|
|
export LESS_TERMCAP_se=$'\E[0m' # end standout-mode
|
|
export LESS_TERMCAP_so=$'\E[38;5;11m' # begin standout-mode - info box
|
|
export LESS_TERMCAP_ue=$'\E[0m' # end underline
|
|
export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline
|
|
# }}}
|
|
# Prompt {{{
|
|
if [[ $UID != 0 ]]; then
|
|
local username_color="%F{blue}"
|
|
else
|
|
local username_color="%F{red}"
|
|
fi
|
|
local host_color="%F{green}"
|
|
local path_color="%F{blue}"
|
|
PROMPT="${username_color}$USERNAME%f@${host_color}%B%M%b%f ${path_color}%B%~%b%f > "
|
|
#}
|
|
|
|
## Spelling prompt
|
|
SPROMPT='zsh: correct '%R' to '%r' ? ([Y]es/[N]o/[E]dit/[A]bort) '
|
|
|
|
# }}}
|
|
# History {{{
|
|
HISTFILE=~/.zsh/histfile
|
|
HISTSIZE=1000
|
|
SAVEHIST=50000
|
|
# }}}
|
|
# Other ZSH options {{{
|
|
autoload -U colors
|
|
colors
|
|
|
|
autoload -U zmv
|
|
|
|
# .. -> cd ../
|
|
setopt autocd
|
|
|
|
# cd /etc/**/foo/blub searches ;)
|
|
setopt extendedglob
|
|
|
|
# push cds to directory stack
|
|
setopt auto_pushd
|
|
|
|
# don't push something twice
|
|
setopt pushd_ignore_dups
|
|
|
|
# don't kill jobs when exiting shell
|
|
setopt no_hup
|
|
# and don't warn
|
|
setopt no_check_jobs
|
|
|
|
# show us when some command didn't exit with 0
|
|
setopt print_exit_value
|
|
|
|
# makepkg -g > PKGBUILD
|
|
# zsh: file exists: PKGBUILD
|
|
#
|
|
# work saved ;)
|
|
setopt no_clobber
|
|
|
|
setopt inc_append_history
|
|
setopt no_bg_nice
|
|
setopt share_history
|
|
#setopt bang_hist
|
|
setopt extended_history
|
|
#setopt hist_reduce_blanks
|
|
setopt hist_ignore_space
|
|
setopt hist_find_no_dups
|
|
setopt hist_ignore_dups
|
|
setopt nohistverify
|
|
setopt prompt_subst
|
|
#setopt hist_fcntl_lock
|
|
setopt always_to_end
|
|
|
|
unsetopt auto_remove_slash
|
|
|
|
# show the output of time if commands takes longer than n secs (only user+system)
|
|
REPORTTIME=5
|
|
|
|
# allow comments in interactive shells
|
|
setopt interactivecomments
|
|
|
|
# ignore lines starting with a space
|
|
setopt hist_ignore_space
|
|
|
|
# disable XON/XOFF flow control (^s/^q)
|
|
stty -ixon
|
|
|
|
# }}}
|
|
# Aliases {{{
|
|
# better ask before we lose data
|
|
alias rm='rm -Iv'
|
|
alias cp='cp -iv'
|
|
alias mv='mv -iv'
|
|
|
|
# I don't like bytes
|
|
alias dum='du -kh --max-depth=2'
|
|
alias dus='du -skh'
|
|
alias du='du -kh'
|
|
alias df="df -Th"
|
|
|
|
# function to make ls look nice is below
|
|
alias ls='ls -rhbtF --color=auto'
|
|
alias ll='ls -rhbtF --color=auto -l'
|
|
alias la='ls -rhbtF --color=auto -a'
|
|
alias lla='ls -rhbtF --color=auto -la'
|
|
alias lld='ls -rhbtF --color=auto -ld'
|
|
|
|
alias grep='grep --color'
|
|
|
|
alias mkdir='nocorrect mkdir'
|
|
alias wget='nocorrect noglob wget'
|
|
|
|
alias p='pacman'
|
|
alias sd='systemctl --no-pager'
|
|
|
|
alias is="iostat -Nyxm 2"
|
|
|
|
alias nocomment='egrep -v "^\s*(#|$)"'
|
|
alias wgetc="wget --content-disposition"
|
|
# }}}
|
|
# Completion stuff {{{
|
|
autoload -Uz compinit
|
|
compinit
|
|
|
|
unsetopt correct_all
|
|
|
|
zstyle :compinstall filename '$HOME/.zshrc'
|
|
|
|
# performance tweaks
|
|
zstyle ':completion:*' use-cache on
|
|
zstyle ':completion:*' cache-path $HOME/.zsh/cache
|
|
zstyle ':completion:*' use-perl on
|
|
|
|
# completion colours
|
|
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
|
|
|
|
zstyle ':completion:*' completer _complete _match _approximate
|
|
zstyle ':completion:*:match:*' original only
|
|
|
|
# ignore completion for commands we don't have
|
|
zstyle ':completion:*:functions' ignored-patterns '_*'
|
|
|
|
# get rid of .class and .o files for vim
|
|
zstyle ':completion:*:vim:*' ignored-patterns '*.(class|o)'
|
|
|
|
# show menu when tabbing
|
|
zstyle ':completion:*' menu yes select
|
|
|
|
# better completion for kill
|
|
zstyle ':completion:*:*:kill:*' command 'ps --forest -u$USER -o pid,%cpu,tty,cputime,cmd'
|
|
|
|
# Provide more processes in completion of programs like killall:
|
|
zstyle ':completion:*:processes-names' command 'ps c -u ${USER} -o command | uniq'
|
|
compdef pkill=killall
|
|
|
|
# bugged with zsh 4.3.10 for whatever reason
|
|
zstyle ':completion:*' file-sort time
|
|
#zstyle ':completion:*' file-sort name
|
|
|
|
# Ignore same file on rm
|
|
zstyle ':completion:*:(rm|kill|diff):*' ignore-line yes
|
|
zstyle ':completion:*:rm:*' file-patterns '*:all-files'
|
|
|
|
# e.g. ls foo//bar -> ls foo/bar
|
|
zstyle ':completion:*' squeeze-slashes true
|
|
|
|
# if in foo/bar don't show bar when cd ../<TAB>
|
|
zstyle ':completion:*:cd:*' ignore-parents parent pwd
|
|
|
|
# Prevent lost+found directory from being completed
|
|
zstyle ':completion:*:cd:*' ignored-patterns '(*/)#lost+found'
|
|
|
|
# ignore case when completing
|
|
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
|
|
|
# make some stuff look better
|
|
# from: http://ft.bewatermyfriend.org/comp/zsh/zshrc.d/compsys.html
|
|
zstyle ':completion:*:descriptions' format "- %{${fg[yellow]}%}%d%{${reset_color}%} -"
|
|
zstyle ':completion:*:messages' format "- %{${fg[cyan]}%}%d%{${reset_color}%} -"
|
|
zstyle ':completion:*:corrections' format "- %{${fg[yellow]}%}%d%{${reset_color}%} - (%{${fg[cyan]}%}errors %e%{${reset_color}%})"
|
|
zstyle ':completion:*:default' \
|
|
select-prompt \
|
|
"%{${fg[yellow]}%}Match %{${fg_bold[cyan]}%}%m%{${fg_no_bold[yellow]}%} Line %{${fg_bold[cyan]}%}%l%{${fg_no_bold[red]}%} %p%{${reset_color}%}"
|
|
zstyle ':completion:*:default' \
|
|
list-prompt \
|
|
"%{${fg[yellow]}%}Line %{${fg_bold[cyan]}%}%l%{${fg_no_bold[yellow]}%} Continue?%{${reset_color}%}"
|
|
zstyle ':completion:*:warnings' \
|
|
format \
|
|
"- %{${fg_no_bold[red]}%}no match%{${reset_color}%} - %{${fg_no_bold[yellow]}%}%d%{${reset_color}%}"
|
|
zstyle ':completion:*' group-name ''
|
|
|
|
# manual pages are sorted into sections
|
|
# from: http://ft.bewatermyfriend.org/comp/zsh/zshrc.d/compsys.html
|
|
zstyle ':completion:*:manuals' separate-sections true
|
|
zstyle ':completion:*:manuals.(^1*)' insert-sections true
|
|
|
|
### highlight the original input.
|
|
zstyle ':completion:*:original' \
|
|
list-colors "=*=$color[red];$color[bold]"
|
|
|
|
### highlight words like 'esac' or 'end'
|
|
zstyle ':completion:*:reserved-words' \
|
|
list-colors "=*=$color[red]"
|
|
|
|
### colorize hostname completion
|
|
zstyle ':completion:*:*:*:*:hosts' \
|
|
list-colors "=*=$color[cyan];$color[bg-black]"
|
|
|
|
### colorize username completion
|
|
zstyle ':completion:*:*:*:*:users' \
|
|
list-colors "=*=$color[red];$color[bg-black]"
|
|
|
|
### colorize processlist for 'kill'
|
|
zstyle ':completion:*:*:kill:*:processes' \
|
|
list-colors "=(#b) #([0-9]#) #([^ ]#)*=$color[none]=$color[yellow]=$color[green]"
|
|
# }}}
|
|
|
|
umask 077
|
|
stty -ctlecho
|
|
|
|
# Show again
|
|
stty echo
|
|
|
|
# vim: set ft=zsh:
|