From 5201eadb2c20568cae6ba2033f97c4cc8d24665a Mon Sep 17 00:00:00 2001 From: viktorbarzin Date: Sun, 23 Aug 2020 16:27:53 +0100 Subject: [PATCH] Update readme --- README.md | 89 ++++++++++++++++++++++++++++++++++++++------ images/tmux_zsh.png | Bin 0 -> 16298 bytes 2 files changed, 78 insertions(+), 11 deletions(-) create mode 100644 images/tmux_zsh.png diff --git a/README.md b/README.md index 4f5569e..d567642 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,84 @@ -# README - -You can find my dotfiles collection in here. Feel free to use and share them. +![](./images/tmux_zsh.png) # Tmux settings -.tmux.conf is a fork of https://github.com/gpakosz/.tmux conf file. -.tmux.conf.local is where you add your settings and overrides. -Use both. -# Vim settings -Vimrc uses the **wombat256mod.vim** colorscheme. You can download it from the offical report of from this repo. -Some of my python editing settings are in the vimrc. The pylint settings are here - search for **g:pymode_lint_**. +My `tmux` settings are based on [`gpakosz`'s Oh-My-Tmux](https://github.com/gpakosz/.tmux) and I've added/changed some of the settings to better suite my taste + +# Installation + +Download and run [`setup.sh`](https://raw.githubusercontent.com/ViktorBarzin/dot_files/master/setup.sh) + +```bash +curl -sL https://raw.githubusercontent.com/ViktorBarzin/dot_files/master/setup.sh | bash +``` + +It will install `tmux` and `zsh` if missing and `wget` all the config files. -# TODO +# Everyday hacks +Shortcuts I use every day. +I find all of these shortcuts improve my typing speed and hence my productivity. -Add documentation +They are focused around either 1) less distance my fingers have to move or 2) shorten commonly written commands + + +## tmux +| Feature | Shortcut | +|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------| +| `tmux` Prefix | `Alt-x` | +| text selection | `Prefix Enter` to enter visual mode, then vim bindings to move, `V` to enter select mode and once happy with selection `Enter` to copy to OS clipboard | +| Vertical split pane | `Prefix \` | +| Horizontal pane split | `Prefix -` | +| Pane movement | Hold `Alt` and vim movement bindings (or arrows for normies) to move in all directions | +| Pane resize | `Prefix` and vim movement | +| Maximize current pane | `Prefix z` (z for zoom) | +| Toggle synchronize panes | `Prefix s` (s for synchronize) | +| New window | `Prefix c` (c for create) | +| Go to previous window | `Prefix Tab` (similar to Alt-Tab) | +| Go to window number `n` | `Prefix n` where n is window number (window numbers are in status line) | +| Rename window | `Prefix ,` | +| Edit a long command line | `Ctrl-x Ctrl-e` , this is more bash-y rather than tmux | + +To edit the status line, edit `tmux_conf_theme_status_left` and `tmux_conf_theme_status_right` in `tmux.conf.local`. + +## zsh shortcuts + +A full list of all aliases can be seen in the [.bash_aliases file](https://raw.githubusercontent.com/ViktorBarzin/dot_files/master/.bash_aliases). + +Here are some of the highlights I tend to use more often: + +| Alias | Command | Comment | +|------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------| +| `a` | `sudo atop` | `sudo` is used to get full overview | +| `h` | `sudo htop` | ^ | +| `pmr` | `python manage.py runserver` | Django developers know | +| `nopmr` | `ps auxw | grep runserver | awk '{print \$2}' | xargs kill` | Django crashes from time to time but does not release the binded port which prevents from binding to them again | +| `python manage.py migrate` | `pmm` | | +| `python manage.py make migrations` | `pmmm` | | +| `g` | `git` | 66.7% improvement ;) | +| `gs` | `git status` | | +| `ga` | `git add` | | +| `gc` | `git commit` | | +| `gp` | `git push origin master` | | +| `gpull` | `git pull --rebase origin master` | Please always rebase, don't do merge commits... | +| `gd` | `git diff` | | +| `gds` | `git diff --staged` | Changes that are `add`-ed and will be part of the commit | +| `gl` | `git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all` | A very pretty version of git log | +| `git-standup` | long function, not included for brevity | A useful git function to show commits from yesterday that's useful during standups | +| `omg` | `sudo systemctl restart NetworkManager` | When `NetworkManager` drives you crazy by crashing often | +| `omg1.1` | `sudo rmmod iwlmvm && sudo rmmod iwlwifi; sudo modprobe iwlwifi` | Reload wifi module | +| `myip` | `curl icanhzip.com` | Get your public/global IPv4/IPv6 address | +| `root` | `sudo su -` | `sudo su` (without the `-`) keeps environment which, in a shared environ, can be dangerous | +| `aliases` | `vim ~/.bash_aliases && source ~/.bash_aliases` | Convenient way to add new aliases and source them upon exit | +| `zshrc` | `vim ~/.zshrc` | ^ | +| `f` | `free -h` | Check memory usage | +| `xo` | `xdg-open` | Handy way to open any file type | +| `dk` | `docker` | 76.7% performance increase ;) | +| `dkon` | `sudo systemctl start docker` | | +| `dkoff` | `sudo systemctl stop docker` | | +| `s` | `ssh` | | +| `speedtest` | `curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py |python -` | speed test without needing the package installed locally | +| `kb` | `kubectl` | Massive perf increase if you are a k8s user | +| `kubectl get pods` | `kbp` | | +| `kn` | `kubens` | Switch k8s namespaces to avoid writing `-n some_namespace` all the time | +| `toclip` | `xclip -selection clipboard` | Usually I do `some command | toclip` to get the output to clipboard | diff --git a/images/tmux_zsh.png b/images/tmux_zsh.png new file mode 100644 index 0000000000000000000000000000000000000000..eb342deaabdf178e6e5179d30899bae82a8dfd34 GIT binary patch literal 16298 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 kx9=Zn*r@Jc+>atRJL0Qr_;=u&Xd(R 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 literal 0 HcmV?d00001