Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## Options section
- setopt correct # Auto correct mistakes
- setopt extendedglob # Extended globbing. Allows using regular expressions with *
- setopt nocaseglob # Case insensitive globbing
- setopt rcexpandparam # Array expension with parameters
- setopt nocheckjobs # Don't warn about running processes when exiting
- setopt numericglobsort # Sort filenames numerically when it makes sense
- setopt nobeep # No beep
- setopt appendhistory # Immediately append history instead of overwriting
- setopt histignorealldups # If a new command is a duplicate, remove the older one
- setopt autocd # if only directory path is entered, cd there.
- zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # Case insensitive tab completion
- zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" # Colored completion (different colors for dirs/files/etc)
- zstyle ':completion:*' rehash true # automatically find new executables in path
- # Speed up completions
- zstyle ':completion:*' accept-exact '*(N)'
- zstyle ':completion:*' use-cache on
- zstyle ':completion:*' cache-path ~/.zsh/cache
- HISTFILE=~/.zhistory
- HISTSIZE=1000
- SAVEHIST=500
- #export EDITOR=/usr/bin/nano
- #export VISUAL=/usr/bin/nano
- WORDCHARS=${WORDCHARS//\/[&.;]} # Don't consider certain characters part of the word
- ## Keybindings section
- bindkey -e
- bindkey '^[[7~' beginning-of-line # Home key
- bindkey '^[[H' beginning-of-line # Home key
- if [[ "${terminfo[khome]}" != "" ]]; then
- bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line
- fi
- bindkey '^[[8~' end-of-line # End key
- bindkey '^[[F' end-of-line # End key
- if [[ "${terminfo[kend]}" != "" ]]; then
- bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line
- fi
- bindkey '^[[2~' overwrite-mode # Insert key
- bindkey '^[[3~' delete-char # Delete key
- bindkey '^[[C' forward-char # Right key
- bindkey '^[[D' backward-char # Left key
- bindkey '^[[5~' history-beginning-search-backward # Page up key
- bindkey '^[[6~' history-beginning-search-forward # Page down key
- # Navigate words with ctrl+arrow keys
- bindkey '^[Oc' forward-word #
- bindkey '^[Od' backward-word #
- bindkey '^[[1;5D' backward-word #
- bindkey '^[[1;5C' forward-word #
- bindkey '^H' backward-kill-word # delete previous word with ctrl+backspace
- bindkey '^[[Z' undo # Shift+tab undo last action
- ## Alias section
- alias cp="cp -i" # Confirm before overwriting something
- alias df='df -h' # Human-readable sizes
- alias free='free -m' # Show sizes in MB
- alias gitu='git add . && git commit && git push'
- # Theming section
- autoload -U compinit colors zcalc
- compinit -d
- colors
- # enable substitution for prompt
- setopt prompt_subst
- # Prompt (on left side) similar to default bash prompt, or redhat zsh prompt with colors
- #PROMPT="%(!.%{$fg[red]%}[%n@%m %1~]%{$reset_color%}# .%{$fg[green]%}[%n@%m %1~]%{$reset_color%}$ "
- # Maia prompt
- PROMPT="%B%{$fg[cyan]%}%(4~|%-1~/.../%2~|%~)%u%b >%{$fg[cyan]%}>%B%(?.%{$fg[cyan]%}.%{$fg[red]%})>%{$reset_color%}%b " # Print some system information when the shell is first started
- # Print a greeting message when shell is started
- echo $USER@$HOST $(uname -srm) $(lsb_release -rcs)
- ## Prompt on right side:
- # - shows status of git when in git repository (code adapted from https://techanic.net/2012/12/30/my_git_prompt_for_zsh.html)
- # - shows exit status of previous command (if previous command finished with an error)
- # - is invisible, if neither is the case
- # Modify the colors and symbols in these variables as desired.
- GIT_PROMPT_SYMBOL="%{$fg[blue]%}±" # plus/minus - clean repo
- GIT_PROMPT_PREFIX="%{$fg[green]%}[%{$reset_color%}"
- GIT_PROMPT_SUFFIX="%{$fg[green]%}]%{$reset_color%}"
- GIT_PROMPT_AHEAD="%{$fg[red]%}ANUM%{$reset_color%}" # A"NUM" - ahead by "NUM" commits
- GIT_PROMPT_BEHIND="%{$fg[cyan]%}BNUM%{$reset_color%}" # B"NUM" - behind by "NUM" commits
- GIT_PROMPT_MERGING="%{$fg_bold[magenta]%}⚡︎%{$reset_color%}" # lightning bolt - merge conflict
- GIT_PROMPT_UNTRACKED="%{$fg_bold[red]%}●%{$reset_color%}" # red circle - untracked files
- GIT_PROMPT_MODIFIED="%{$fg_bold[yellow]%}●%{$reset_color%}" # yellow circle - tracked files modified
- GIT_PROMPT_STAGED="%{$fg_bold[green]%}●%{$reset_color%}" # green circle - staged changes present = ready for "git push"
- parse_git_branch() {
- # Show Git branch/tag, or name-rev if on detached head
- ( git symbolic-ref -q HEAD || git name-rev --name-only --no-undefined --always HEAD ) 2> /dev/null
- }
- parse_git_state() {
- # Show different symbols as appropriate for various Git repository states
- # Compose this value via multiple conditional appends.
- local GIT_STATE=""
- local NUM_AHEAD="$(git log --oneline @{u}.. 2> /dev/null | wc -l | tr -d ' ')"
- if [ "$NUM_AHEAD" -gt 0 ]; then
- GIT_STATE=$GIT_STATE${GIT_PROMPT_AHEAD//NUM/$NUM_AHEAD}
- fi
- local NUM_BEHIND="$(git log --oneline ..@{u} 2> /dev/null | wc -l | tr -d ' ')"
- if [ "$NUM_BEHIND" -gt 0 ]; then
- GIT_STATE=$GIT_STATE${GIT_PROMPT_BEHIND//NUM/$NUM_BEHIND}
- fi
- local GIT_DIR="$(git rev-parse --git-dir 2> /dev/null)"
- if [ -n $GIT_DIR ] && test -r $GIT_DIR/MERGE_HEAD; then
- GIT_STATE=$GIT_STATE$GIT_PROMPT_MERGING
- fi
- if [[ -n $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
- GIT_STATE=$GIT_STATE$GIT_PROMPT_UNTRACKED
- fi
- if ! git diff --quiet 2> /dev/null; then
- GIT_STATE=$GIT_STATE$GIT_PROMPT_MODIFIED
- fi
- if ! git diff --cached --quiet 2> /dev/null; then
- GIT_STATE=$GIT_STATE$GIT_PROMPT_STAGED
- fi
- if [[ -n $GIT_STATE ]]; then
- echo "$GIT_PROMPT_PREFIX$GIT_STATE$GIT_PROMPT_SUFFIX"
- fi
- }
- git_prompt_string() {
- local git_where="$(parse_git_branch)"
- # If inside a Git repository, print its branch and state
- [ -n "$git_where" ] && echo "$GIT_PROMPT_SYMBOL$(parse_git_state)$GIT_PROMPT_PREFIX%{$fg[yellow]%}${git_where#(refs/heads/|tags/)}$GIT_PROMPT_SUFFIX"
- # If not inside the Git repo, print exit codes of last command (only if it failed)
- [ ! -n "$git_where" ] && echo "%{$fg[red]%}"
- }
- # Right prompt with exit status of previous command if not successful
- #RPROMPT="%{$fg[red]%} %(?..[%?])"
- # Right prompt with exit status of previous command marked with ✓ or ✗
- #RPROMPT="%(?.%{$fg[green]%}✓ %{$reset_color%}.%{$fg[red]%}✗ %{$reset_color%})"
- # Color man pages
- export LESS_TERMCAP_mb=$'\E[01;32m'
- export LESS_TERMCAP_md=$'\E[01;32m'
- export LESS_TERMCAP_me=$'\E[0m'
- export LESS_TERMCAP_se=$'\E[0m'
- export LESS_TERMCAP_so=$'\E[01;47;34m'
- export LESS_TERMCAP_ue=$'\E[0m'
- export LESS_TERMCAP_us=$'\E[01;36m'
- export LESS=-r
- ## Plugins section: Enable fish style features
- # Use syntax highlighting
- source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
- # Use history substring search
- source /usr/share/zsh/plugins/zsh-history-substring-search/zsh-history-substring-search.zsh
- # bind UP and DOWN arrow keys to history substring search
- zmodload zsh/terminfo
- bindkey "$terminfo[kcuu1]" history-substring-search-up
- bindkey "$terminfo[kcud1]" history-substring-search-down
- bindkey '^[[A' history-substring-search-up
- bindkey '^[[B' history-substring-search-down
- # Apply different settigns for different terminals
- case $(basename "$(cat "/proc/$PPID/comm")") in
- login)
- RPROMPT="%{$fg[red]%}"
- alias x='startx ~/.xinitrc' # Type name of desired desktop after x, xinitrc is configured for it
- ;;
- # 'tmux: server')
- # RPROMPT='$(git_prompt_string)'
- # ## Base16 Shell color themes.
- # #possible themes: 3024, apathy, ashes, atelierdune, atelierforest, atelierhearth,
- # #atelierseaside, bespin, brewer, chalk, codeschool, colors, default, eighties,
- # #embers, flat, google, grayscale, greenscreen, harmonic16, isotope, londontube,
- # #marrakesh, mocha, monokai, ocean, paraiso, pop (dark only), railscasts, shapesifter,
- # #solarized, summerfruit, tomorrow, twilight
- # #theme="eighties"
- # #Possible variants: dark and light
- # #shade="dark"
- # #BASE16_SHELL="/usr/share/zsh/scripts/base16-shell/base16-$theme.$shade.sh"
- # #[[ -s $BASE16_SHELL ]] && source $BASE16_SHELL
- # # Use autosuggestion
- # source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
- # ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20
- # ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
- # ;;
- *)
- RPROMPT='$(git_prompt_string)'
- # Use autosuggestion
- source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
- ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20
- ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=8'
- ;;
- esac
- # Mine
- export LANG="en_US.UTF-8"
- export LC_ALL="en_US.UTF-8"
- export LANGUAGE="en_US.UTF-8"
- export PATH=~/bin:$PATH
- export VISUAL="vim"
- export EDITOR="vim"
- export BROWSER="firefox"
- export PAGER='less -RF'
- alias man='PAGER="most" man ' # See ~/bin/most to find out it is actually most -cwd
- alias e='exit'
- alias g='gvim'
- alias v='vim'
- alias m='mplayer'
- alias sbash='sudo bash'
- alias szsh='sudo zsh'
- alias smc='sudo mc'
- alias svim='sudo vim'
- alias xbg='xbacklight -get'
- alias xbs='xbacklight -set'
- alias cgrep='grep --color=always'
- alias grepl='cgrep --include=*.lua -r '
- alias greph='cgrep --include=*.{h,hh,hpp,hxx} -r '
- alias grepc='cgrep --include=*.{c,cc,cpp,cxx} -r '
- alias grephc='cgrep --include=*.{h,hh,hpp,hxx,c,cc,cpp,cxx} -r '
- alias grepj='cgrep --include=*.java -r '
- alias grepp='cgrep --include=*.py -r '
- alias grepr='cgrep --include=*.robot -r'
- alias grepa='cgrep --include=*.{h,hh,hpp,hcc,c,cc,cpp,cxx,java,py,robot} -r '
- alias grept='cgrep --include=*.txt -r'
- alias grepcm='cgrep --include=CMakeLists.txt --include=*.cmake -r '
- alias rbt='systemctl reboot'
- alias pwoff='systemctl poweroff'
- gcl() {
- grc cat $1 | less -R
- }
- # Arch specific
- alias p='pacman'
- alias pcdu='sudo pacman -Syyuv'
- alias pcar='sudo pacman -Rsn $(pacman -Qdtq)'
- alias pl='sudo pacman -Ql'
- alias pi='sudo pacman -S'
- alias pin='sudo pacman --needed -S'
- plb()
- {
- files=`pacman -Ql $1`
- files_w_bin=`echo -e ${files} | grep bin`
- echo -e ${files_w_bin}
- }
- # Pass aliases through sudo
- alias sudo='sudo '
- # mc fucks up prompt (it disappears after running commands) sometimes for some reason
- if ps $PPID | grep mc; then
- #unset RPROMPT # this removes git_prompt_string cool stuff but I have no other solution for now
- # RPROMPT='$(git_prompt_string)'
- # this removes git_prompt_string cool stuff but I have no other solution for now
- RPROMPT=""
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement