Skip to content

go program that installs and customizes ohmyzsh tmux vim via various plugins and other nice to haves

License

Notifications You must be signed in to change notification settings

mr-pmillz/pimp-my-shell

Repository files navigation

Pimp-My-Shell

Go Report Card GitHub all releases GitHub repo size GitHub go.mod Go version GitHub release (latest by date) GitHub commit activity Twitter CI

Table of Contents

pimp-my-shell.png

Install

go install github.com/mr-pmillz/pimp-my-shell/v2@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

MacOS Users Ensure that you have x-code CommandLineTools installed

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

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 mac-bind-keys.png

Enjoy