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

Overview

Pimp-My-Shell

Donate Donate with Bitcoin Donate with Ethereum Codacy Badge Go Report Card GitHub all releases GitHub Workflow Status GitHub repo size GitHub go.mod Go version GitHub release (latest by date) GitHub commit activity Codacy Badge

Table of Contents

pimp-my-shell.png

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

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

%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" ">
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

Issues
  • Enhanced ini style config embedded file

    Enhanced ini style config embedded file

    • Merge append
    enhancement 
    opened by mr-pmillz 0
  • Testing & Coverage

    Testing & Coverage

    • Generate coverage from go test
    enhancement 
    opened by mr-pmillz 0
  • Enhancements ✨

    Enhancements ✨

    • Added LICENSE file
    • Added more test coverage
    • Fixed failing tests
    • Various other improvements
    • Added Go Report Badge
    bug enhancement 
    opened by mr-pmillz 0
  • Bump github.com/tidwall/gjson from 1.10.2 to 1.11.0

    Bump github.com/tidwall/gjson from 1.10.2 to 1.11.0

    Bumps github.com/tidwall/gjson from 1.10.2 to 1.11.0.

    Commits
    • 2c9fd24 Added Path and Paths for getting the original path of a Result
    • 7cadbb5 Ensure Parse handles NaN/Inf and returns correct Index
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump gopkg.in/ini.v1 from 1.63.2 to 1.64.0

    Bump gopkg.in/ini.v1 from 1.63.2 to 1.64.0

    Bumps gopkg.in/ini.v1 from 1.63.2 to 1.64.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/tidwall/gjson from 1.11.0 to 1.12.0

    Bump github.com/tidwall/gjson from 1.11.0 to 1.12.0

    Bumps github.com/tidwall/gjson from 1.11.0 to 1.12.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump gopkg.in/ini.v1 from 1.64.0 to 1.65.0

    Bump gopkg.in/ini.v1 from 1.64.0 to 1.65.0

    Bumps gopkg.in/ini.v1 from 1.64.0 to 1.65.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump github.com/tidwall/gjson from 1.11.0 to 1.12.0

    Bump github.com/tidwall/gjson from 1.11.0 to 1.12.0

    Bumps github.com/tidwall/gjson from 1.11.0 to 1.12.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump gopkg.in/ini.v1 from 1.65.0 to 1.66.0

    Bump gopkg.in/ini.v1 from 1.65.0 to 1.66.0

    Bumps gopkg.in/ini.v1 from 1.65.0 to 1.66.0.

    Release notes

    Sourced from gopkg.in/ini.v1's releases.

    1.66.0

    What's Changed

    New Contributors

    Full Changelog: https://github.com/go-ini/ini/compare/v1.65.0...v1.66.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • add cli args to specify what you want installed with a default of all.

    add cli args to specify what you want installed with a default of all.

    So when program is ran with no args, by default it will do a full installation

    Can use cobra or mk-ideal cli library.

    Cobra will require significant refactoring of the project.

    enhancement 
    opened by mr-pmillz 0
Releases(v1.7.4)
🎀 a nice lil shell for lua people made with go and lua

Hilbish ?? a nice lil shell for lua people made with go and lua It is currently in a mostly beta state but is very much usable (I'm using it right now

Hilbis Development 142 Dec 1, 2021
That's right - order that nice pizza 🍕 with `kubectl`

pizza-controller making kubernetes do what it was always meant to do: order pizza. https://gum.co/kubernetes-crds to get up to speed with custom resou

Ciro S. Costa 101 Dec 4, 2021
Style definitions for nice terminal layouts 👄

Lip Gloss Style definitions for nice terminal layouts. Built with TUIs in mind. Lip Gloss takes an expressive, declarative approach to terminal render

Charm 3.4k Dec 2, 2021
Slice and dice your TMUX windows and panes

chaakoo Introduction Configuration Using Chaakoo Examples Download License Introduction Chaakoo is a wrapper over TMUX that can create sessions, windo

Pallav Jha 77 Nov 20, 2021
Learning Vim and Vimscript doesn't have to be hard. This is the guide that you're looking for.

Learn Vim (the Smart Way) What's This? Learn Vim (the Smart Way) is a guide to learn the good parts of Vim. There are many places to learn Vim: the vi

Igor Irianto 7.1k Nov 27, 2021
Integrated console application library, using Go structs as commands, with menus, completions, hints, history, Vim mode, $EDITOR usage, and more ...

Gonsole - Integrated Console Application library This package rests on a readline console library, (giving advanced completion, hint, input and histor

null 14 Oct 27, 2021
Plugin which makes tmux work and feel like i3wm

Tmux Tilish This is a plugin that makes tmux behave more like a typical dynamic window manager. It is heavily inspired by i3wm, and most keybindings a

Jabir Ali Ouassou 192 Nov 26, 2021
Vim made in Go that you shouldn't use.

novavim This is my attempt at making Vim from scratch in Go, meaning this project will utilize no libs outside of the Go standard library: no ncurses,

Benji Nguyen 15 May 20, 2021
create boilerplate structure for neovim plugins

boilit Boil yourself a sweet plugin Installation • Usage Ain't nobody got time to create plugin directories: boilit yourself! boilit creates boilerpla

Gennaro Tedesco 26 Nov 23, 2021
A command tool to help user install oh-my-zsh plugins fast in a comfortable way

zshx A command tool to help user install oh-my-zsh plugins fast in a comfortable way. in other way, it is a zsh plugin package manager. How to use the

xylon 5 Aug 2, 2021
A golang CLI to display various stats about Hockey teams and their players

A golang CLI to display various stats about Hockey teams and their players

Jonathan Mainguy 1 Oct 26, 2021
A small CLI tool to check connection from a local machine to a remote target in various protocols.

CHK chk is a small CLI tool to check connection from a local machine to a remote target in various protocols.

null 26 Apr 22, 2021
cross-platform, cli app to perform various operations on string

sttr is command line software that allows you to quickly run various transformation operations on the string.

Abhimanyu Sharma 160 Nov 29, 2021
sttr is command line software that allows you to quickly run various transformation operations on the string.

sttr is command line software that allows you to quickly run various transformation operations on the string.

Abhimanyu Sharma 60 Sep 21, 2021
A very basic cli keyring tool to use accross various OS.

A very basic cli keyring tool to use accross various OS.

Vianney Bouchaud 2 Nov 29, 2021
Powerful CLI written in GO to generate projects in various technologies

Barca CLI is a project generator written in GO and its purpose is to build and configure HTTP servers, web proxy, SPA/PWA, Blog and custom landing page. It's easy, fast and productive.

Barca 0 Nov 28, 2021
Various CLI tools in go

tools A collection of small command line utilities: hxd - a small hexdumper imgsize - show sizes of jpeg or png images kwed-dl - download latest track

Brian Schau 0 Nov 26, 2021
A Go package for converting RGB and other color formats/colorspaces into DMC thread colors (DMC color name and floss number)

go-c2dmc A Go package for converting RGB and other color formats/colorspaces into DMC thread colors (DMC color name and floss number). Implemented as

null 2 Dec 5, 2021
Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.

asciigraph Go package to make lightweight ASCII line graphs ╭┈╯. Installation go get github.com/guptarohit/asciigraph Usage Basic graph package main

Rohit Gupta 1.8k Dec 3, 2021