Initial commit
This commit is contained in:
commit
5ed23c482d
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
zplug/
|
8
README.md
Normal file
8
README.md
Normal file
@ -0,0 +1,8 @@
|
||||
# zshuper
|
||||
Pronounced as '/ʃ/uper'
|
||||
|
||||
This is my simple zsh config
|
||||
|
||||
## Installation
|
||||
`git clone --depth=1 https://github.com/mikroskeem/zshuper ~/.config/zshuper && echo "source ~/.config/zshuper/main.zsh" > ~/.zshrc`
|
||||
|
8
config.zsh
Normal file
8
config.zsh
Normal file
@ -0,0 +1,8 @@
|
||||
# zshuper default configuration
|
||||
# Runtime-critical configurations
|
||||
|
||||
# zplug home
|
||||
ZPLUG_HOME=~/.config/zshuper/zplug
|
||||
|
||||
# Shall we use grml PS1? Useful only when there are no prompt plugins
|
||||
USE_GRML_PS1=no
|
5
functions/correct.zsh
Normal file
5
functions/correct.zsh
Normal file
@ -0,0 +1,5 @@
|
||||
setopt correct
|
||||
zstyle ':completion:*:correct:*' insert-unambiguous true
|
||||
zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}'
|
||||
zstyle ':completion:*:correct:*' original true
|
||||
zstyle ':completion:correct:' prompt 'correct to: %e'
|
7
functions/hosts-completion.zsh
Normal file
7
functions/hosts-completion.zsh
Normal file
@ -0,0 +1,7 @@
|
||||
hosts=(
|
||||
$(
|
||||
([ -r .ssh/known_hosts ] && awk '{print $1}' .ssh/known_hosts | tr , '\n') | sort -u
|
||||
)
|
||||
)
|
||||
|
||||
zstyle ':completion:*' hosts $hosts
|
23
functions/keys.zsh
Normal file
23
functions/keys.zsh
Normal file
@ -0,0 +1,23 @@
|
||||
# Part of this is from http://unix.stackexchange.com/q/62919
|
||||
# Fixes my navigation keys
|
||||
typeset -A key
|
||||
key[Home]=${terminfo[khome]}
|
||||
key[End]=${terminfo[kend]}
|
||||
key[Insert]=${terminfo[kich1]}
|
||||
key[Delete]=${terminfo[kdch1]}
|
||||
key[Up]=${terminfo[kcuu1]}
|
||||
key[Down]=${terminfo[kcud1]}
|
||||
key[Left]=${terminfo[kcub1]}
|
||||
key[Right]=${terminfo[kcuf1]}
|
||||
key[PageUp]=${terminfo[kpp]}
|
||||
key[PageDown]=${terminfo[knp]}
|
||||
[[ -n "${key[Home]}" ]] && bindkey "${key[Home]}" beginning-of-line
|
||||
[[ -n "${key[End]}" ]] && bindkey "${key[End]}" end-of-line
|
||||
[[ -n "${key[Insert]}" ]] && bindkey "${key[Insert]}" overwrite-mode
|
||||
[[ -n "${key[Delete]}" ]] && bindkey "${key[Delete]}" delete-char
|
||||
[[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-history
|
||||
[[ -n "${key[Down]}" ]] && bindkey "${key[Down]}" down-line-or-history
|
||||
[[ -n "${key[Left]}" ]] && bindkey "${key[Left]}" backward-char
|
||||
[[ -n "${key[Right]}" ]] && bindkey "${key[Right]}" forward-char
|
||||
[[ -n "${key[PageUp]}" ]] && bindkey "${key[PageUp]}" beginning-of-buffer-or-history
|
||||
[[ -n "${key[PageDown]}" ]] && bindkey "${key[PageDown]}" end-of-buffer-or-history
|
9
functions/new-scratch.zsh
Normal file
9
functions/new-scratch.zsh
Normal file
@ -0,0 +1,9 @@
|
||||
# Create quick scratch directory for testing and other stuff
|
||||
function new-scratch {
|
||||
local cur_dir="$HOME/scratch"
|
||||
local new_dir="$HOME/tmp/scratch_$(date '+%d-%m-%Y')"
|
||||
mkdir -p $new_dir
|
||||
ln -nfs $new_dir $cur_dir
|
||||
cd $cur_dir
|
||||
printf "New scratch dir ready for grinding ;>\n\n"
|
||||
}
|
19
functions/pacman.zsh
Normal file
19
functions/pacman.zsh
Normal file
@ -0,0 +1,19 @@
|
||||
# Wrap pacman so you don't need to put sudo before
|
||||
# Optionally use yaourt or pacaur
|
||||
function pacman {
|
||||
if [ ! -z "${NO_PACMAN_WRAP}" ]; then
|
||||
sudo /usr/bin/pacman "$@"
|
||||
return $?
|
||||
fi
|
||||
local ypath="$(command -v yaourt)"
|
||||
local ppath="$(command -v pacaur)"
|
||||
if [ ! -z "${ypath}" ]; then
|
||||
${ypath} "$@"
|
||||
elif [ ! -z "${ppath}" ]; then
|
||||
${ppath} "$@"
|
||||
else
|
||||
echo "No yaourt or pacaur found, defaulting to pacman"
|
||||
sudo /usr/bin/pacman "$@"
|
||||
fi
|
||||
return $?
|
||||
}
|
14
functions/rationalise-dot.zsh
Normal file
14
functions/rationalise-dot.zsh
Normal file
@ -0,0 +1,14 @@
|
||||
# Alias '...' to do '../..'
|
||||
# Example: type 'cd ...' to get 'cd ../..'
|
||||
rationalise-dot() {
|
||||
local MATCH
|
||||
if [[ $LBUFFER =~ '(^|/| | |'$'\n''|\||;|&)\.\.$' ]]; then
|
||||
LBUFFER+=/
|
||||
zle self-insert
|
||||
zle self-insert
|
||||
else
|
||||
zle self-insert
|
||||
fi
|
||||
}
|
||||
zle -N rationalise-dot
|
||||
bindkey . rationalise-dot
|
12
functions/use-zaw-search.zsh
Normal file
12
functions/use-zaw-search.zsh
Normal file
@ -0,0 +1,12 @@
|
||||
# Use ZAW search
|
||||
# First check if ZAW is installed and sourced
|
||||
zplug info zsh-users/zaw >|/dev/null || return
|
||||
|
||||
bindkey '^R' zaw-history
|
||||
bindkey -M filterselect '^R' down-line-or-history
|
||||
bindkey -M filterselect '^S' up-line-or-history
|
||||
bindkey -M filterselect '^E' accept-search
|
||||
|
||||
zstyle ':filter-select:highlight' matched fg=red
|
||||
zstyle ':filter-select' max-lines 5
|
||||
zstyle ':filter-select' extended-search yes
|
105
main.zsh
Normal file
105
main.zsh
Normal file
@ -0,0 +1,105 @@
|
||||
# zshuper - pronounced as '/ʃ/uper'
|
||||
#
|
||||
# Edit config.zsh to configure zshuper
|
||||
# Source this script like:
|
||||
# % source ~/.config/zshuper/main.zsh
|
||||
#
|
||||
|
||||
# Load config
|
||||
source ~/.config/zshuper/config.zsh
|
||||
|
||||
# ---------------------------------
|
||||
# 3rd party plugins
|
||||
|
||||
# Check if zplug is installed
|
||||
if [ ! -d "${ZPLUG_HOME}" ]; then
|
||||
echo ">>> Installing zplug"
|
||||
git clone --depth=1 https://github.com/zplug/zplug ${ZPLUG_HOME}
|
||||
fi
|
||||
|
||||
# Include zplug
|
||||
source ${ZPLUG_HOME}/init.zsh
|
||||
|
||||
# Let zplug manage itself
|
||||
zplug "zplug/zplug"
|
||||
|
||||
# Include own plugins
|
||||
source ~/.config/zshuper/plugins.zsh
|
||||
|
||||
# And include highlighting at the end
|
||||
# https://github.com/zsh-users/zsh-syntax-highlighting#faq
|
||||
zplug "zsh-users/zsh-syntax-highlighting", nice:10
|
||||
|
||||
|
||||
# Install and load plugins
|
||||
if ! zplug check; then
|
||||
zplug install
|
||||
fi
|
||||
zplug load
|
||||
|
||||
# ---------------------------------
|
||||
# zshuper specific configuration
|
||||
|
||||
# Set up sane defaults and useful functions
|
||||
# Use grml PS1 (if enabled)
|
||||
# https://grml.org/zsh/
|
||||
if [ "${USE_GRML_PS1}" = "yes" ]; then
|
||||
PS1="%B%F{red}%(?..%? )%f%b%B%F{blue}%n%f%b@%m %B%40<..<%~%<< %b%# "
|
||||
fi
|
||||
|
||||
# ls colors and aliases
|
||||
export LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:"
|
||||
alias ls="ls --color"
|
||||
alias l="ls -l"
|
||||
alias lah="ls -lah"
|
||||
|
||||
# Make rm, mv and cp recursive and verbose
|
||||
alias rm="rm -rfv"
|
||||
alias mv="mv -v"
|
||||
alias cp="cp -rv"
|
||||
|
||||
# Default editor
|
||||
# cool people use neovim :>
|
||||
export EDITOR=$(if [ ! -z "$(command -v nvim)" ]; then echo "nvim" else echo "vim"; fi)
|
||||
export VISUAL=${EDITOR}
|
||||
|
||||
# less options
|
||||
export LESS="-r"
|
||||
|
||||
# History control
|
||||
setopt histignorealldups
|
||||
setopt extended_history
|
||||
setopt append_history
|
||||
setopt histignorespace
|
||||
unsetopt share_history
|
||||
setopt histallowclobber
|
||||
setopt INC_APPEND_HISTORY_TIME
|
||||
HISTSIZE=100000
|
||||
SAVEHIST=100000
|
||||
HISTFILE=~/.zsh_history
|
||||
|
||||
# Enable comments in interactive shell
|
||||
setopt interactivecomments
|
||||
|
||||
# Show program exit code and don't check for jobs on exit
|
||||
setopt printexitvalue
|
||||
setopt nocheckjobs
|
||||
|
||||
# Set up autocompletion and correction
|
||||
autoload -U compinit && compinit
|
||||
setopt menu_complete
|
||||
zstyle ':completion:*' menu select
|
||||
zstyle ':completion:*:warnings' format 'Nuffin there :('
|
||||
zstyle ':completion:*' expand prefix suffix
|
||||
zstyle ':completion:*' completer _expand_alias _complete _approximate
|
||||
zstyle ':completion:*:approximate:*' max-errors 4
|
||||
zstyle ':completion:*' special-dirs true
|
||||
|
||||
# zshuper functions
|
||||
source ~/.config/zshuper/functions/keys.zsh
|
||||
source ~/.config/zshuper/functions/new-scratch.zsh
|
||||
source ~/.config/zshuper/functions/rationalise-dot.zsh
|
||||
source ~/.config/zshuper/functions/use-zaw-search.zsh
|
||||
source ~/.config/zshuper/functions/correct.zsh
|
||||
source ~/.config/zshuper/functions/pacman.zsh
|
||||
source ~/.config/zshuper/functions/hosts-completion.zsh
|
6
plugins.zsh
Normal file
6
plugins.zsh
Normal file
@ -0,0 +1,6 @@
|
||||
# See https://github.com/zplug/zplug
|
||||
zplug "mafredri/zsh-async"
|
||||
zplug "sindresorhus/pure"
|
||||
zplug "zsh-users/zsh-history-substring-search"
|
||||
zplug "willghatch/zsh-cdr"
|
||||
zplug "zsh-users/zaw"
|
Loading…
Reference in New Issue
Block a user