~/.zshrc

This is my configuration file for Zsh, a powerful and extremely customizable interactive shell, which I highly recommend. I combine Zim and fzf with it for additional functionality.

If you are interested, my configuration file is available for download as well.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# vim: set et fenc=utf-8 ft=zsh sts=4 sw=4 ts=8 tw=80 :
#
# Author: microfracture / https://linuxious.com
# Updated: 2015-12-26


# =============================================================================
# Initial setup
# =============================================================================

export TERM='xterm-256color'

export BROWSER="firefox"                # Set Firefox as the default browser.
export EDITOR="nvim"                    # Set Neovim as the default editor.
export MAIL="~/.mail"                   # Set mail location.

# Set paths.
export PATH=${PATH}:~/.bin:~/.local/bin:~/.gem/ruby/2.3.0/bin

# Miscellaneous settings.
setopt appendhistory                    # Append history instead of replacing.
setopt autocd                           # If the given command is a directory
                                        # switch to it.
setopt beep                             # Beep when a history entry isn't there.
setopt extendedglob                     # Treat #, ~, and, ^ characters as part
                                        # of the patterns for filename gen.
setopt nomatch                          # Print an error when the filename
                                        # pattern has no match.
setopt notify                           # Report job status.
bindkey -v                              # Enable Vi mode.

# =============================================================================
# Aliases
# =============================================================================

alias cp="nocorrect cp -v"              # Verbose copying with no auto-correct.
alias df="df -h"                        # Enable human-readable output.
alias du='ncdu'                         # Use the Ncdu tool instead of du.
alias grep="grep -n --color"            # Show color and line numbers for match.
alias ht="htop -u $(whoami)"            # Show only my processes.

# Colorize listing output, append indicator, and list directories first.
alias ls="ls --group-directories-first --color -F"

alias mkdir='nocorrect mkdir'           # No auto-correct when making directory.
alias mv="nocorrect mv -v"              # Verbose moving with no auto-correct.
alias netstat="netstat -nap --inet"     # List all network connections.
alias pacman="pacaur"                   # Use pacaur to manage everything.
alias pgrep="pgrep -l"                  # List processes by both name and id.
alias rm="nocorrect rm -v"              # Verbose removing with no auto-correct.

# Take a screenshot with a slight delay and generate an additional thumbnail.
alias ss="scrot %Y-%m-%d_$(whoami).png -d 8 -c -t 10%"

# Update fzf and prezto to their latest versions.
alias updates="cd ~/.fzf && git pull && \
    git submodule update --init --recursive && \
    cd ~/.zprezto && git pull && \
    git submodule update --init --recursive && \
    cd ~/.zim && git pull && \
    git submodule update --init --recursive && \
    cd ~"

# =============================================================================
# Initalize scripts
# =============================================================================

# Initialize Prezto and fzf if available.
#if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
#    source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
#fi

# Initialize Zim and fzf if available.
if [[ -s ${ZDOTDIR:-${HOME}}/.zim/init.zsh ]]; then
  source ${ZDOTDIR:-${HOME}}/.zim/init.zsh
fi

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh