The purpose of this document is serve as a repository of the Unix shell commands and key bindings that either are the most useful or that I use the most.
## tmux
### Sessions
Start new session named *name*
`tmux new -s name`
Attach latest session
`tmux a`
Attach to session named *name*
`tmux a -t name`
Detach from session
Ctrl+b,d
List all sessions
`tmux ls`
Ctrl+b,s
Rename current session
`tmux rename-session newname`
Ctrl+b,$
Kill session named *name*
`tmux kill-ses -t name`
Kill all sessions except the current
`tmux kill-ses -a`
### Windows
Create new window
Ctrl+b,c
Rename current window
Ctrl+b,,
Next window
Ctrl+b,n
Previous window
Ctrl+b,p
Select window by number
Ctrl+b,0...9
Close window
Ctrl+b,&
### Panes
Split pane vertically
Ctrl+b,%
Split pane horizontally
Ctrl+b,"
Toggle last active pane
Ctrl+b,;
Switch pane to the direction
Ctrl+b,←
Ctrl+b,↑
Ctrl+b,→
Ctrl+b,↓
Convert pane into a new window
Ctrl+b,!
Close current pane
Ctrl+b,x
## git
### Basics
Initialize the current directory as git repository
`git init`
Stage changes of a file or directory
`git add `
Commit changes with message
`git commit -m `
List files staged, unstaged and untracked
`git status`
Display entire commit history in a nice way
`git log --all --graph --decorate`
### Branches
List all branches in current repo
`git branch`
Create new branch named *branch_name* and checkout on it
`git checkout -b `
### Undoing stuff
### Remote repositories
## docker
## weechat
Switch between weechat core buffer and server buffer
Ctrl+x