Pimp-My-Shell
Table of Contents
Install
If you have a version of golang >= 16.X you can install with
go install github.com/mr-pmillz/pimp-my-shell@latest
If using an older version of golang
go get github.com/mr-pmillz/pimp-my-shell@latest
Manual installation
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
Usage
./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
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
- Fonts
- NerdFonts
- In Iterm2 Preferences, Profiles -> Text -> Font
- CLI Tools
- lsd
- fzf
- bat
- cheat
- useful command syntax cheatsheets Ex.
cheat tar
- git-delta
- Beautiful less pager for
git diff
- bpytop
- Nice process monitor for the cli
- Oh-My-ZSH
- Theme
- Powerlevel10k
- This is an awesome theme for zsh
- Oh-My-ZSH Custom Plugins
- TMUX
- VIM
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
- ~/.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
Enjoy