Browse Source

Switched to Zsh and consolidated all aliases

Resolves #21 and closes #30. Combined all alias files, converted them into
proper Zsh formatting and reorganized them into better sections.  Installed Oh
My Zsh and then sourced the combined aliases file (zsh_aliases) from .zshrc.
Also made URL's clickable in urxvt and briefly commented purpose of all Vim
plug-ins.
red-hat-laptop
Kevin Mok 7 years ago
parent
commit
4dce53aafc
  1. 1
      .gitignore
  2. 12
      README.md
  3. 375
      aliases/zsh_aliases
  4. 3
      configs/NZXT/i3.conf
  5. 10
      dotfiles/Xresources
  6. 2
      dotfiles/set-dotfiles.sh
  7. 68
      dotfiles/vimrc
  8. 95
      dotfiles/zshrc

1
.gitignore

@ -4,3 +4,4 @@ cp-*
temp.sh
konsole.shortcuts
commit-msg.txt
core

12
README.md

@ -14,7 +14,7 @@ being. My dotfiles are primarily focused on workflow efficiency.
## Basic Info
* **OS**: Linux Mint 18.2
* **Terminal**: [rxvt](https://www.wikiwand.com/en/Rxvt)
* **Shell**: Bash
* **Shell**: [Zsh](http://zsh.sourceforge.net/)
* **WM**: [i3-gaps](https://github.com/Airblader/i3)
* **Editor**: Vim
@ -34,19 +34,15 @@ as they have slightly different needs (multiple monitors, screen size, etc.).
* [Various Vim plug-ins](https://github.com/Kevin-Mok/linux-config/blob/f922e56b50635c9344b26f9088e37acea5647359/dotfiles/vimrc#L38)
* [Neofetch](https://github.com/dylanaraps/neofetch) - CLI-based app to display
system information.
* [Oh My Zsh](https://github.com/robbyrussell/oh-my-zsh) - For Zsh config and
themes.
* [pipes.sh](https://github.com/pipeseroni/pipes.sh) - Animated pipes
screensaver.
* [pywal](https://github.com/dylanaraps/pywal) - Color scheme coordinator.
## Switch From
## Switch From (To-Do)
* Linux Mint ➔ Arch Linux
* Bash ➔ [Zsh](http://zsh.sourceforge.net/)
* Vim(-based) apps:
* Vim ➔ [Neovim](https://github.com/neovim/neovim)
* Google Chrome ➔ [qutebrowser](https://github.com/qutebrowser/qutebrowser)
* Nemo/Thunar ➔ [ranger](https://ranger.github.io/)
<!-- below are more minor stylistic goals that don't feel the need to explicitly
include
* i3blocks ➔ Polybar
* Discord ➔ CLI IRC app -->

375
aliases/zsh_aliases

@ -0,0 +1,375 @@
# system {{{ #
setopt extendedglob
# vim mode {{{ #
bindkey -v
function zle-line-init zle-keymap-select {
VIM_PROMPT="%{$fg_bold[yellow]%} [% NORMAL]% %{$reset_color%}"
RPS1="${${KEYMAP/vicmd/$VIM_PROMPT}/(main|viins)/} $EPS1"
zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select
export KEYTIMEOUT=1
# }}} vim mode #
# directory-related {{{ #
alias l='ls -a'
alias ll='ls -alF'
function f() { cd $1 && pwd > ~/.last_dir && ls -a ; }
# restore last dir
if [ -f ~/.last_dir ]
then cd `cat ~/.last_dir`
fi
# todo: fix
# function f.() { f $(printf "%0.s../" $(seq 1 $1 )) ; }
alias "f."="f .."
alias "f.2"="f ...."
alias dd="f ~/Downloads"
alias doc="f ~/Documents"
alias cfg="f ~/.config"
# }}} directory-related #
# command line related {{{ #
alias cs='printf "\033c"'
alias hst="history"
alias nf="neofetch"
function cld() { colordiff -y --suppress-common-lines $1 $2 ; }
alias grep='grep --color=auto'
function rfnd() { find . -name "$1" ; }
function rgrp() { grep -r $1 * ; }
# }}} command line related #
# power options {{{ #
alias s="systemctl suspend"
alias sd="sudo shutdown 0"
alias reb="sudo shutdown -r 0"
alias lo="i3-msg exit"
# }}} power options #
function apti() { sudo apt install $1 ; }
function aptr() { sudo apt remove $1 ; }
# }}} system #
# config files {{{ #
alias lc="f ~/linux-config/"
alias lca="f ~/linux-config/aliases"
alias vv="vi ~/.vimrc"
alias vu="vi ~/.Xresources"
alias vzb="vi ~/.zshrc"
alias vz="vi ~/linux-config/aliases/zsh_aliases"
# i3 {{{ #
alias v3="vi ~/.config/i3/config"
alias v3b="vi ~/.config/i3blocks/i3blocks.conf"
alias i3b="f /usr/share/i3blocks"
alias pipes="pipes.sh -t 2"
alias bgs="nemo ~/Pictures/Backgrounds"
# }}} i3 #
# UltiSnips {{{ #
usnp_dir="~/.vim/plugged/vim-snippets/UltiSnips"
alias snp="f $usnp_dir"
function vsnp() { vi ~/.vim/plugged/vim-snippets/UltiSnips/"$1".snippets ; }
alias tm="vi $usnp_dir/texmath.snippets"
# }}} #
# }}} config files #
# applications {{{ #
function ok() { okular $1 ; }
function chr() { google-chrome $1 ; }
function mrk() { pandoc -o ${1%.*}.html $1 && chr ${1%.*}.html ; }
alias vbn="cvlc --loop --alsa-gain 1 ~/Downloads/brown-noise.mp3"
alias vlm="alsamixer -c 1"
alias rmsw="rm .sw*"
function rs(){ redshift -O $(echo "scale=2;$1*1000" | bc) ; }
alias rx="redshift -x"
# python related {{{ #
function grpy() { grep $1 *.py ; }
function p3() { python3 $1 ; }
function py() { python $1 ; }
# }}} python related #
# }}} applications #
# device specific {{{ #
# NZXT {{{
if [ "$(hostname)" = "NZXT" ]; then
# rotate monitor {{{ #
function rt() {
output="HDMI-0"
if [ "$1" = "s" ]
# if [ "${1:0:1}" = "s" ]
then
output="DVI-I-1"
fi
dir="normal"
if [ "$2" = "r" ]
# if [ "${1:1:2}" = "r" ]
then
dir="right"
fi
if [ "$2" = "l" ]
then
dir="left"
fi
# echo "xrandr --output \"$output\" --rotate \"$dir\""
xrandr --output "$output" --rotate "$dir"
}
# }}} rotate monitor #
# audio {{{ #
# was for transferring sink inputs between DAC and speakers but not
# necessary if not using
alias alsi="pactl list short sink-inputs"
alias als="pactl list short sinks"
function amsih() { pactl move-sink-input $1 0 ; }
function amsis() { pactl move-sink-input $1 1 ; }
# }}} audio #
# apps {{{ #
alias nem="nemo ."
alias spt="speedtest"
alias pg="ping -c 5 google.ca"
alias w7="VBoxManage startvm W7 --type headless"
function gvx() { urxvt --help 2>&1 | grep $1 ; }
alias rur="xrdb ~/.Xresources"
# }}} apps #
# various coding projs {{{ #
alias sfa="f ~/Documents/self-authoring"
alias rcg="$cd_coding_dir/random-color-generator"
alias dcr="$cd_coding_dir/dcr-logger"
alias pf="$cd_coding_dir/ParsaFood"
# swbot {{{ #
alias sb="$cd_coding_dir/swbot"
# alias psb="p3 create_skills_dict.py"
# alias psbo="p3 create_skills_dict.py > output.py"
alias psb="p3 create_monster_dict.py"
alias psbo="p3 create_monster_dict.py > output.py"
# }}} swbot #
# resume {{{ #
alias cv="f ~/Documents/resume/examples"
alias cvf="f ~/Documents/resume/examples/cv"
alias vcv="vi ~/Documents/resume/examples/cv.tex"
alias okcv="ok ~/Documents/resume/examples/cv.pdf"
# }}} resume #
# }}} various coding projs #
fi
# NZXT }}}
# laptop {{{
if [[ "$(hostname)" = "X1-Carbon" ]]; then
# key swaps {{{ #
xmodmap -e "keycode 9 = Escape"
xmodmap -e "keycode 22 = Home"
xmodmap -e "keycode 119 = End"
xmodmap -e "keycode 110 = Delete"
xmodmap -e "keycode 115 = BackSpace"
# }}} key swaps #
alias gbl="xbacklight -get"
function sbl() { xbacklight -set $(echo "scale=2;$1*10" | bc) ; }
alias thn="thunar ."
alias plz="f ~/platterz2018/ocr-reader/app/src/main/java/com/google/android/gms/samples/vision/ocrreader"
alias ans="f /usr/local/android-studio/bin/"
fi
# laptop }}}
# }}} device specific #
# git {{{ #
# aliases {{{
alias gstore="git config credential.helper store"
# add {{{ #
alias ga="git add -A .*(.) && gs"
alias gac="git add -A .*(.); git commit"
# }}} add #
# diff/log {{{ #
alias gd="git diff -w"
alias gdc="git diff --cached"
alias gl="git log"
alias gsl="git shortlog"
# }}} diff/log #
# update {{{ #
alias gs="git status -u"
alias gchom="git checkout master"
# push {{{ #
alias egc="vim -c \"set syn=gitcommit\" -c \"set tw=72\" commit-msg.txt"
alias gst="git stash"
alias gstp="git stash pop"
alias gc="git commit"
function gcm(){ git commit -m "$1" ; }
alias gps="git push"
alias gclear="git stash clear"
# }}} push #
# pull {{{ #
alias gpl="git pull --rebase"
alias grbc="git rebase --continue"
# }}} pull #
# }}} update #
# edit {{{ #
alias vig="vi .gitignore"
alias vir="vi README.md"
alias crm="mrk README.md"
# }}} edit #
# aliases }}}
# functions {{{
function gcho() { git checkout $1 ; }
function gcln() { git clone $1 ; }
function gremotes() {
git remote set-url --add --push origin $1
git remote set-url --add --push origin $2
}
# gmrgr: merge repos {{{ #
function gmrgr() {
# 1 = remote name, 2 = remote path
git remote add $1 $2
git fetch $1
# whichever branch you want to merge
git merge --allow-unrelated-histories $1/master
git remote remove $1
}
# }}} merge repos #
function gunc() { git update-index --assume-unchanged $1 ; }
# pull all {{{ #
function gpla() {
cmds="lc snp 9r sch"
for cmd in $cmds; do
eval $cmd && gst && gpl && gstp && gclear
done
}
# }}} pull all #
# functions }}}
# }}} git #
# coding projs {{{ #
cd_coding_dir="f ~/Documents/coding"
alias ans="f /usr/local/android-studio/bin && ./studio.sh"
alias cdn="$cd_coding_dir"
alias tb="$cd_coding_dir/trapbot"
alias vtb="$cd_coding_dir/trapbot && vi scan_reddit.py"
alias ptb="python scan_reddit.py"
alias rtb="$cd_coding_dir/trapbot && python scan_reddit.py"
# }}} coding projs #
# school {{{ #
in_lab=false
cd_school="f ~/Documents/School/notes"
# general {{{
alias sch="$cd_school"
alias 236="$cd_school/236"
alias rml="rm *.aux *.log *.pdf"
# LaTeX {{{ #
function pdl() { pdflatex $1 ; }
function cptp() {
cp *template.tex cp-template.tex
chmod 600 cp-template.tex
date=`date +%-m-%d`
mv cp-template.tex "$date".tex
}
# }}} LaTeX #
# }}}
# 136 {{{
alias clc="gcalccmd"
alias mt="ok ~/Documents/School/calc-textbook.pdf"
alias 136="$cd_school/136"
alias 136l="$cd_school/136/lecture"
alias pr3="$cd_school/136/par/3"
# }}}
# 209 {{{
# dirs {{{
cd_209="f ~/Documents/School/209";
alias 209="$cd_209"
alias 9r="$cd_209/mokkar"
alias l7="$cd_209/mokkar/lab7"
alias 9a="$cd_209/mokkar/a3"
# }}}
alias ll="ls -la"
alias cdf="echo \". ./.bashrc\"&& ssh mokkar@cdf.utoronto.ca"
function mkex() { chmod 777 $1 ; }
# {{{ Compilation Functions
# compile without running
function c9() { gcc -Wall -std=gnu99 -g -o "${1%.*}.out" "$1" -lm ; }
# compile all without running {{{ #
function c9a() {
for file in *; do
if [[ $file = *.c ]]; then
gcc -Wall -std=gnu99 -g -o "${file%.*}".out "$file"
fi
done
}
# }}} compile all without running #
# compile and run
function c9r() { c9 $1 && ./"${1%.*}.out" ; }
# compile and run with input
function c9i() { c9 $1 && ./"${1%.*}.out" < $2 ; }
# compile and run with input file {{{ #
function run() {
while read line; do
# ./$1.out $line
echo ./$1.out $line
done < $1.in
}
# }}} compile and run with input file #
# temp {{{ #
alias m7="make childcreates && ./childcreates 3"
alias m3="make pfact && ./pfact 10"
alias 35w="c9 3-5_wait.c && ./3-5_wait.out abc a"
# }}} temp #
# }}}
# }}}
alias 36a="$cd_school/236/a1"
alias 6t="ok ~/Documents/School/236-textbook.pdf"
# }}} school #

3
configs/NZXT/i3.conf

@ -17,8 +17,7 @@ set $sch_dir "$HOME/Documents/School"
# app shortcuts {{{ #
bindsym Mod4+a exec studio
# bindsym $mod+control+Return exec i3-sensible-terminal
# bindsym $mod+control+Return exec rxvt-unicode
bindsym $mod+control+Return exec xrdb .Xresources; exec rxvt-unicode
bindsym $mod+control+Return exec rxvt-unicode
bindsym Mod4+c exec google-chrome
bindsym Mod4+e exec nemo
bindsym Mod4+o exec okular

10
dotfiles/Xresources

@ -1,8 +1,16 @@
URxvt.font: xft:hack:size=11
/* transparency {{{ */
URxvt*inheritPixmap: true
URxvt*transparent: true
! URxvt*shading: 0 to 99 darkens, 101 to 200 lightens
URxvt*shading: 20
URxvt*shading: 10
/* }}} transparency */
URxvt.scrollBar: false
/* Clickable URLs {{{ */
URxvt.perl-ext-common: default,matcher
URxvt.url-launcher: /usr/bin/xdg-open
URxvt.matcher.button: 1
/* }}} Clickable URLs */

2
dotfiles/set-dotfiles.sh

@ -1,7 +1,7 @@
# Get directory variables from script.
. ../dirs.sh
# List of dotfiles I want to link to system.
dotfiles="bashrc gitconfig inputrc vimrc Xresources"
dotfiles="bashrc gitconfig inputrc vimrc Xresources zshrc"
# cd $dot_dir
for dotfile in $dotfiles; do
# Remove system dotfile.

68
dotfiles/vimrc

@ -35,46 +35,82 @@ if empty(glob('~/.vim/autoload/plug.vim'))
endif
call plug#begin('~/.vim/plugged')
" prequisite for other plugins
Plug 'vim-scripts/L9'
" find files from within Vim
" Plug 'vim-scripts/FuzzyFinder'
Plug 'whatyouhide/vim-gotham'
" Gotham color scheme
" Plug 'whatyouhide/vim-gotham'
" collection of Vim color schemes
Plug 'flazz/vim-colorschemes'
" preview Vim color scheme easily within Vim
Plug 'xolox/vim-colorscheme-switcher'
" prerequisite for above plugin
Plug 'xolox/vim-misc'
" automatically save buffers upon returning to normal mode
Plug '907th/vim-auto-save'
let g:auto_save = 1
" compile LaTeX PDF while writing the file
Plug 'xuhdev/vim-latex-live-preview', { 'for': 'tex' }
" provides various functionality for writing LaTeX in Vim
Plug 'lervag/vimtex'
" auto-completion for various languages
Plug 'Valloric/YouCompleteMe'
Plug 'Kevin-Mok/vim-snippets'
" wrote short bits of text that expand into whatever you want
" demo: https://www.youtube.com/watch?v=Zik6u0klD40
Plug 'SirVer/ultisnips'
" better key bindings for UltiSnipsExpandTrigger
let g:UltiSnipsExpandTrigger = "<tab>"
let g:UltiSnipsJumpForwardTrigger = "<tab>"
let g:UltiSnipsJumpBackwardTrigger = "<C-tab>"
" custom snippets
Plug 'Kevin-Mok/vim-snippets'
" to make YouCompleteMe work with UltiSnips (both use Tab)
Plug 'ervandew/supertab'
" make YCM compatible with UltiSnips (using supertab)
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
let g:SuperTabDefaultCompletionType = '<C-n>'
" easily comment/uncomment lines
Plug 'scrooloose/nerdcommenter'
let g:NERDTrimTrailingWhitespace = 1
let g:NERDSpaceDelims = 1
Plug 'xolox/vim-misc'
Plug 'xolox/vim-colorscheme-switcher'
" add quotes/brackets around chunks of text easily
Plug 'tpope/vim-surround'
" navigate around file easily and precisely
Plug 'easymotion/vim-easymotion'
" status bar displaying various info about the current buffer
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" continue Markdown lists when started
Plug 'dkarter/bullets.vim'
Plug 'dylanaraps/wal.vim'
" }}} vim-plug "
" YCM/UltiSnips {{{ "
" make YCM compatible with UltiSnips (using supertab)
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
let g:SuperTabDefaultCompletionType = '<C-n>'
" better key bindings for UltiSnipsExpandTrigger
let g:UltiSnipsExpandTrigger = "<tab>"
let g:UltiSnipsJumpForwardTrigger = "<tab>"
let g:UltiSnipsJumpBackwardTrigger = "<C-tab>"
" }}} YCM/UltiSnips "
" coordinate Vim color scheme with terminal color scheme
Plug 'dylanaraps/wal.vim'
call plug#end()
" colorscheme gotham256
colorscheme wal
" }}} vim-plug "
" Mappings {{{ "
map <F3> :wa<CR>
map <F4> :wqa<CR>

95
dotfiles/zshrc

@ -0,0 +1,95 @@
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH
# Path to your oh-my-zsh installation.
export ZSH=/home/kevin/.oh-my-zsh
# Set name of the theme to load. Optionally, if you set this to "random"
# it'll load a random theme each time that oh-my-zsh is loaded.
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
ZSH_THEME="muse"
# Set list of themes to load
# Setting this variable when ZSH_THEME=random
# cause zsh load theme from this variable instead of
# looking in ~/.oh-my-zsh/themes/
# An empty array have no effect
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
# Uncomment the following line to use hyphen-insensitive completion. Case
# sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment the following line to disable bi-weekly auto-update checks.
# DISABLE_AUTO_UPDATE="true"
# Uncomment the following line to change how often to auto-update (in days).
# export UPDATE_ZSH_DAYS=13
# 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="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# HIST_STAMPS="mm/dd/yyyy"
# 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? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
git
)
source $ZSH/oh-my-zsh.sh
source ~/linux-config/aliases/zsh_aliases
# User configuration
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='mvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# ssh
# export SSH_KEY_PATH="~/.ssh/rsa_id"
# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
# For a full list of active aliases, run `alias`.
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
Loading…
Cancel
Save