This gist is a reference to my Medium Post The Ultimate Terminal
It contains my configuration files for zsh and tmux along with a sample tmuxinator project yml.
Also, feel free to leave any questions or comments on the original blog post.
# use zsh & make pbcopy/paste work | |
set-option -g default-terminal /bin/zsh | |
set-option -g default-command "reattach-to-user-namespace -l zsh" | |
bind w new-window -c "#{pane_current_path}" | |
# It's 2016 | |
set -g default-terminal "screen-256color" | |
# set the command escape time to 0 | |
set -s escape-time 0 | |
set -g history-limit 5000 | |
# set-option -g mouse on | |
# Automatically set window title and don't let it change | |
set-option -g set-titles on | |
set-option -g allow-rename off | |
# Start copy mode when scrolling up | |
# bind -n WheelUpPane copy-mode | |
# bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'" | |
# bind -n WheelDownPane select-pane -t= \; send-keys -M | |
# Setup 'v' to begin selection as in Vim | |
# bind-key -t vi-copy v begin-selection | |
# bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy" | |
# Update default binding of `Enter` to also use copy-pipe | |
# unbind -t vi-copy Enter | |
# bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy" | |
# Bind ']' to use pbpaste | |
# bind ] run "reattach-to-user-namespace pbpaste | tmux load-buffer - && tmux paste-buffer" | |
# Use c-a as prefix | |
set -g prefix C-a | |
unbind C-b | |
bind C-a send-prefix | |
bind-key a send-key C-a | |
# | |
## Start numbering at 1 | |
set -g base-index 1 | |
setw -g pane-base-index 1 | |
bind * choose-session # choose session interactively | |
# use hjkl for moving | |
# and HJKL for resizing | |
setw -g mode-keys vi | |
bind h select-pane -L | |
bind j select-pane -D | |
bind k select-pane -U | |
bind l select-pane -R | |
bind-key -r C-h select-window -t :- | |
bind-key -r C-l select-window -t :+ | |
bind -r H resize-pane -L 5 | |
bind -r J resize-pane -D 5 | |
bind -r K resize-pane -U 5 | |
bind -r L resize-pane -R 5 | |
#split win=dow bindings | |
#unbind % # Remove default binding since we’re replacing | |
#bind | split-window -h | |
#bind _ split-window -v | |
# shortcut for closing windows and panes | |
bind-key c kill-pane | |
bind-key C kill-window | |
# bind-key q confirm-before kill-session | |
# bind-key Q confirm-before kill-server | |
unbind o | |
bind o kill-pane -a | |
# unbind c | |
# use v and s for windows splits | |
# unbind % | |
# bind s split-window -v | |
# bind v split-window -h | |
# Rather than constraining window size to the maximum size of any client | |
# connected to the *session*, constrain window size to the maximum size of any | |
# client connected to *that window*. Much more reasonable. | |
set -g aggressive-resize on | |
# Reload the tmux config | |
bind r source-file ~/.tmux.conf \; display "Reloaded!" | |
# powerline | |
run-shell "powerline-daemon -q" | |
source "/usr/local/lib/python2.7/site-packages/powerline/bindings/tmux/powerline.conf" |
# If you come from bash you might have to change your $PATH. | |
# export PATH=$HOME/bin:/usr/local/bin:$PATH | |
# Path to your oh-my-zsh installation. | |
export ZSH=path_to_oh-my-zsh | |
# Set name of the theme to load. Optionally, if you set this to "random" | |
# it'll load a random theme each time that oh-my-zsh is loaded. | |
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes | |
#ZSH_THEME="robbyrussell" | |
ZSH_THEME="dracula" | |
# Uncomment the following line to use case-sensitive completion. | |
# CASE_SENSITIVE="true" | |
# Uncomment the following line to use hyphen-insensitive completion. Case | |
# sensitive completion must be off. _ and - will be interchangeable. | |
# HYPHEN_INSENSITIVE="true" | |
# Uncomment the following line to disable bi-weekly auto-update checks. | |
# DISABLE_AUTO_UPDATE="true" | |
# Uncomment the following line to change how often to auto-update (in days). | |
# export UPDATE_ZSH_DAYS=13 | |
# Uncomment the following line to disable colors in ls. | |
# DISABLE_LS_COLORS="true" | |
# Uncomment the following line to disable auto-setting terminal title. | |
# DISABLE_AUTO_TITLE="true" | |
# Uncomment the following line to enable command auto-correction. | |
# ENABLE_CORRECTION="true" | |
# Uncomment the following line to display red dots whilst waiting for completion. | |
# COMPLETION_WAITING_DOTS="true" | |
# Uncomment the following line if you want to disable marking untracked files | |
# under VCS as dirty. This makes repository status check for large repositories | |
# much, much faster. | |
# DISABLE_UNTRACKED_FILES_DIRTY="true" | |
# Uncomment the following line if you want to change the command execution time | |
# stamp shown in the history command output. | |
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" | |
# HIST_STAMPS="mm/dd/yyyy" | |
# Would you like to use another custom folder than $ZSH/custom? | |
# ZSH_CUSTOM=/path/to/new-custom-folder | |
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) | |
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ | |
# Example format: plugins=(rails git textmate ruby lighthouse) | |
# Add wisely, as too many plugins slow down shell startup. | |
plugins=(git brew node npm postgres rails) | |
source $ZSH/oh-my-zsh.sh | |
# User configuration | |
# export MANPATH="/usr/local/man:$MANPATH" | |
# You may need to manually set your language environment | |
# export LANG=en_US.UTF-8 | |
# Preferred editor for local and remote sessions | |
# if [[ -n $SSH_CONNECTION ]]; then | |
# export EDITOR='vim' | |
# else | |
# export EDITOR='mvim' | |
# fi | |
# Compilation flags | |
# export ARCHFLAGS="-arch x86_64" | |
# ssh | |
# export SSH_KEY_PATH="~/.ssh/dsa_id" | |
# Set personal aliases, overriding those provided by oh-my-zsh libs, | |
# plugins, and themes. Aliases can be placed here, though oh-my-zsh | |
# users are encouraged to define aliases within the ZSH_CUSTOM folder. | |
# For a full list of active aliases, run `alias`. | |
# | |
# Example aliases | |
# alias zshconfig="mate ~/.zshrc" | |
# alias ohmyzsh="mate ~/.oh-my-zsh" | |
# | |
export EDITOR='vim' | |
# Adding tmuxinator completion file | |
source ~/.bin/tmuxinator.zsh |
This gist is a reference to my Medium Post The Ultimate Terminal
It contains my configuration files for zsh and tmux along with a sample tmuxinator project yml.
Also, feel free to leave any questions or comments on the original blog post.
# ~/.tmuxinator/sample.yml | |
name: sample | |
root: ~/ | |
# Optional tmux socket | |
# socket_name: foo | |
# Runs before everything. Use it to start daemons etc. | |
# pre: sudo /etc/rc.d/mysqld start | |
# Runs in each window and pane before window/pane specific commands. Useful for setting up interpreter versions. | |
# pre_window: rbenv shell 2.0.0-p247 | |
# Pass command line options to tmux. Useful for specifying a different tmux.conf. | |
# tmux_options: -f ~/.tmux.mac.conf | |
# Change the command to call tmux. This can be used by derivatives/wrappers like byobu. | |
# tmux_command: byobu | |
# Specifies (by name or index) which window will be selected on project startup. If not set, the first window is used. | |
# startup_window: editor | |
# Specitifes (by index) which pane of the specified window will be selected on project startup. If not set, the first pane is used. | |
# startup_pane: 1 | |
# Controls whether the tmux session should be attached to automatically. Defaults to true. | |
# attach: false | |
# Runs after everything. Use it to attach to tmux with custom options etc. | |
# post: tmux -CC attach -t ams | |
# Tmuxinator Project that creates 6 windows in one tmux session called sample. | |
windows: | |
- git: | |
cd ~/Documents/workspace | |
- webAppName: | |
layout: main-vertical | |
panes: | |
- cd ~/Documents/workspace/webAppName && yarn start | |
- cd ~/Documents/workspace/webAppName && yarn run test | |
- storybook: | |
cd ~/Documents/workspace/webAppName && yarn storybook | |
- backendApi: | |
cd ~/Documents/workspace/backendApi && mvn clean package && java -jar target/backendApi-*.jar | |
- elasticsearch: | |
cd ~/Documents/workspace/elasticsearch-2.4.2/bin && ./elasticsearch | |
- psql: | |
cd ~/Documents/workspace && psql |