Pimp-My-Shell
Table of Contents
Install
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
Usage
./pimp-my-shell
If you already have oh-my-zsh installed, don't worry! Your ~/.zshrc file will not be overridden install script 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
Make sure your vim binaries installed. They should be from ./pimp-my-shell but just in case run the command below.
vim +GoInstallBinaries
About
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
Resources
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
Tmux Hotkeys
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`
VIM Hotkeys
, = 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
Adjusting
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
Custom Aliases
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"
Mac Fix Terminal bind keys
- because of a shortcut conflict with Mission Control/Spaces on MacOSX
- make sure to uncheck these 2 options in
- System Preferences -> Keyboard -> Shortcuts -> Mission Control, Move left/right a space