go install github.com/mr-pmillz/pimp-my-shell/v2@latest
Download the latest release for your system from Releases
- or clone the repo and run
go build
to build the binary.- If you're going to build from source, this project requires >= go v1.17.X
- This project only works on MacOSX and Linux Ubuntu/Debian systems currently
Vim YouCompleteMe plugin requires this for C lang completion
xcode-select --install
./pimp-my-shell
If you already have oh-my-zsh installed, don't worry! Your ~/.zshrc file will not be overridden by the pimp-my-shell. The only thing that will change is your zsh theme and the following plugins will be merged into your existing plugins=() object
git zsh-syntax-highlighting tmux zsh-autosuggestions virtualenv ansible docker docker-compose terraform helm kubectl fzf
After Installation, if you want to Customize Powerlevel10k zsh theme differently, run
p10k configure
If you want your custom vim plugins to automatically update, simply create this cronjob
crontab -e
0 12 * * * cd ~/.vim_runtime/my_plugins && ./update.sh > gitPullUpdates.txt 2>&1
This project was designed to automate all the configurations that I typically set up for my terminal on Macos and Debian/Ubuntu Linux.
Currently, this will (if not already installed and setup)
- install oh-my-zsh + awesome plugins
- install tmux + awesome mac config + plugins
- install vim + awesome vim setup + plugins
- install cheat + configure + community cheatsheets
- fzf + bat for finding files fast + file preview CTRL+r search history stupendously
- and various other dependencies
Please see the following repos for more information about these configurations and plugins All these configurations can be modified to your needs
- Terminal
- Oh-My-ZSH
- Theme
- Powerlevel10k
- This is an awesome theme for zsh
- Oh-My-ZSH Custom Plugins
- TMUX
- VIM
- The Ultimate vimrc
- This comes with a NERDTree Plugin by default
- NERDTree
- ale
- vim-dracula theme
- Custom VIM Plugins not included by default with Ultimate vimrc
- The Ultimate vimrc
See Tmux-Cheat-Sheet
CTRL^b % = split vertical
CTRL^b " = split horizontal
CTRL^b h = jump to left window
CTRL^b k = jump to up window
CTRL^b c = create new pane
CTRL^b , = rename pane
CTRL^b 1 = jump to 1 pane
CTRL^b I = source tmux and install plugins
CTRL^b ! = open current window to new pane`
, = leader key <leader>
,nn = toggle nerdtree
F12 = toggle nerdtree
i = Nerdtree open pane horizontal
s = Nerdtree open pane vertical
CTRL+ww = cycle selected vim pane
,te = open new tab after selecting file
,tb = previous tab
,tn = next tab
:bd = buffer delete (similar to :q except it removes the tab buffer as well as closing the pane but will not quit)
,j = jump to file with fzf fuzzy finder
If you want to customize these configs further, The main files you'll want to look at are the following
- ~/.tmux.conf.local
- ~/.vim_runtime/my_config.vim
- This is where all further customization for vim can be done
- It's the same as default .vimrc you would normally edit
- Do not edit ~/.vimrc
- This is where all further customization for vim can be done
- ~/.zshrc
- You can edit this file with env var and aliases however, it is best a practice to put customizations
- such as aliases in
~/.oh-my-zsh/custom/aliases.zsh
alias .z='source ~/.zshrc'
alias l='lsd -al --group-dirs first'
alias lld='ls -d -alh $PWD/*'
alias hg='history | grep'
alias myip='dig +short myip.opendns.com @resolver1.opendns.com'
alias pyup='python3 -m http.server'
alias a2='curl wttr.in/Ann_Arbor'
alias gs='git status'
alias gcmsg='git commit -m '
alias gl="git log --all --graph --pretty=tformat:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --date=short"
alias gll="git log --all --stat --pretty=tformat:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
alias gln="git --no-pager log --all --stat --pretty=tformat:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative -n 10"
alias clp="pbcopy < $1"
alias fzfbat="fzf --preview 'bat --style numbers,changes --color=always {}' | head -500"