diff --git a/.config/aliasrc b/.config/aliasrc
index 2075edc..feca27f 100644
--- a/.config/aliasrc
+++ b/.config/aliasrc
@@ -33,6 +33,6 @@ alias pacman-autoremove='pacman -Rns $(pacman -Qtdq)'
 
 alias qutebrowser-kiosk='qutebrowser -B $XDG_DATA_DIR/qutebrowser-kiosk -C $XDG_CONFIG_DIR/qutebrowser/config-kiosk.py'
 
-alias sudo='sudo '
-
 alias rm='rm -I --one-file-system -v'
+
+alias sudo='sudo '
diff --git a/.config/environment b/.config/environment
index c4ff41c..a352a37 100644
--- a/.config/environment
+++ b/.config/environment
@@ -9,6 +9,7 @@ export GOPATH="$HOME/.local/share/go"
 export MAKEFLAGS="-j$(grep -c ^processor /proc/cpuinfo)"
 
 export MAILCAPS="$HOME/.config/mailcap/mailcaprc"
+export MARKPATH="$HOME/.config/zsh/jump_marks"
 
 export NOTMUCH_CONFIG="$HOME/.config/notmuch/config"
 
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
index 7db803d..b6c3754 100644
--- a/.config/zsh/.zshrc
+++ b/.config/zsh/.zshrc
@@ -1,62 +1,106 @@
-[ -f "$HOME/.config/user-dirs.dirs" ] && source $HOME/.config/user-dirs.dirs
-source $HOME/.config/environment
+# Path to your oh-my-zsh installation.
+export ZSH="$HOME/.config/zsh/oh-my-zsh"
 
-# Enable colors and change prompt:
-autoload -U colors && colors
-autoload -Uz vcs_info
-precmd()
-{
-    vcs_info
-}
-zstyle ':vcs_info:git*' formats " (%b)" # hash & branch
-setopt prompt_subst
+if [ ! -f "$ZSH/oh-my-zsh.sh" ]
+then
+    echo "Installing oh-my-zsh"
+    RUNZSH="no" sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" > /dev/null
+    rm "$HOME/.zshrc"
+fi
 
-PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$fg[green]%}\$vcs_info_msg_0_%{$reset_color%}
-$%b "
+# Set name of the theme to load --- if set to "random", it will
+# load a random theme each time oh-my-zsh is loaded, in which case,
+# to know which specific one was loaded, run: echo $RANDOM_THEME
+# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
+ZSH_THEME="tjkirch"
 
-# History in cache directory:
-HISTSIZE=1000000
-SAVEHIST=1000000
-HISTFILE=$HOME/.cache/zsh_history
+# Set list of themes to pick from when loading at random
+# Setting this variable when ZSH_THEME=random will cause zsh to load
+# a theme from this variable instead of looking in $ZSH/themes/
+# If set to an empty array, this variable will have no effect.
+# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
 
-# Basic auto/tab complete:
-autoload -U compinit
-zstyle ':completion:*' menu select
-zmodload zsh/complist
-compinit
-_comp_options+=(globdots)		# Include hidden files.
+# Uncomment the following line to use case-sensitive completion.
+# CASE_SENSITIVE="true"
 
-# vi mode
-bindkey -v
-export KEYTIMEOUT=1
+# Uncomment the following line to use hyphen-insensitive completion.
+# Case-sensitive completion must be off. _ and - will be interchangeable.
+# HYPHEN_INSENSITIVE="true"
 
-# Use vim keys in tab complete menu:
-bindkey -M menuselect 'h' vi-backward-char
-bindkey -M menuselect 'k' vi-up-line-or-history
-bindkey -M menuselect 'l' vi-forward-char
-bindkey -M menuselect 'j' vi-down-line-or-history
-bindkey -v '^?' backward-delete-char
+# Uncomment the following line to disable bi-weekly auto-update checks.
+DISABLE_AUTO_UPDATE="false"
 
-zle-line-init() {
-    zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
-    echo -ne "\e[1 q"
-}
-zle -N zle-line-init
-echo -ne '\e[1 q' # Use beam shape cursor on startup.
-# preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
+# Uncomment the following line to automatically update without prompting.
+# DISABLE_UPDATE_PROMPT="true"
 
-# Edit line in vim with ctrl-e:
-autoload edit-command-line; zle -N edit-command-line
-bindkey '^e' edit-command-line
+# Uncomment the following line to change how often to auto-update (in days).
+# export UPDATE_ZSH_DAYS=13
+
+# Uncomment the following line if pasting URLs and other text is messed up.
+# DISABLE_MAGIC_FUNCTIONS="true"
+
+# Uncomment the following line to disable colors in ls.
+# DISABLE_LS_COLORS="true"
+
+# Uncomment the following line to disable auto-setting terminal title.
+# DISABLE_AUTO_TITLE="true"
+
+# Uncomment the following line to enable command auto-correction.
+# ENABLE_CORRECTION="true"
+
+# Uncomment the following line to display red dots whilst waiting for completion.
+# COMPLETION_WAITING_DOTS="true"
+
+# Uncomment the following line if you want to disable marking untracked files
+# under VCS as dirty. This makes repository status check for large repositories
+# much, much faster.
+# DISABLE_UNTRACKED_FILES_DIRTY="false"
+
+# Uncomment the following line if you want to change the command execution time
+# stamp shown in the history command output.
+# You can set one of the optional three formats:
+# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
+# or set a custom format using the strftime function format specifications,
+# see 'man strftime' for details.
+# HIST_STAMPS="yyyy-mm-dd"
+
+# Would you like to use another custom folder than $ZSH/custom?
+# ZSH_CUSTOM=/path/to/new-custom-folder
+
+# Which plugins would you like to load?
+# Standard plugins can be found in $ZSH/plugins/
+# Custom plugins may be added to $ZSH_CUSTOM/plugins/
+# Example format: plugins=(rails git textmate ruby lighthouse)
+# Add wisely, as too many plugins slow down shell startup.
+plugins=(
+    colored-man-pages
+    copydir
+    copyfile
+    cp
+    encode64
+    extract
+    git
+    jump
+    safe-paste
+    sudo
+    vi-mode
+)
+
+source $ZSH/oh-my-zsh.sh
+
+# User configuration
 
 [ -f "$HOME/.config/aliasrc" ] && source $HOME/.config/aliasrc
 [ -x "$(command -v thefuck)" ] && eval $(thefuck --alias)
 
+export MARKPATH="$HOME/.config/zsh/jump_marks"
+
+setopt HIST_IGNORE_DUPS
+export SAVEHIST=1000000
+export HISTSIZE=1000000
+export HISTFILE="$HOME/.cache/zsh_history"
+
+[ -f "$HOME/.config/aliasrc" ] && source $HOME/.config/aliasrc
+
 # Load zsh-syntax-highlighting; should be last.
 source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh 2>/dev/null
-
-if [[ $STICKY_NOTE ]]; then
-    PS1=
-    cat "/tmp/sticky-note"
-    return
-fi
diff --git a/.local/bin/ext b/.local/bin/ext
deleted file mode 100755
index 812b25f..0000000
--- a/.local/bin/ext
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/env sh
-
-if [ -f $1 ] ; then
-    case $1 in
-        *.tar.bz2)   tar xjf $1   ;;
-        *.tar.gz)    tar xzf $1   ;;
-        *.bz2)       bunzip2 $1   ;;
-        *.rar)       unrar x $1   ;;
-        *.gz)        gunzip $1    ;;
-        *.tar)       tar xf $1    ;;
-        *.tbz2)      tar xjf $1   ;;
-        *.tgz)       tar xzf $1   ;;
-        *.zip)       unzip $1     ;;
-        *.Z)         uncompress $1;;
-        *.7z)        7z x $1      ;;
-        *)           echo "'$1' cannot be extracted via ex()" ;;
-    esac
-else
-    echo "'$1' is not a valid file"
-fi