Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
TMUX configuration file
##############################
# _
# | |_ _ __ ___ _ ___ __
# | __| '_ ` _ \| | | \ \/ /
# | |_| | | | | | |_| |> <
# \__|_| |_| |_|\__,_/_/\_\
#
#############################
#
# COPY AND PASTE
# http://robots.thoughtbot.com/tmux-copy-paste-on-os-x-a-better-future
#
# Use vim keybindings in copy mode
setw -g mode-keys vi
# 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"
#
############################################################################
############################################################################
# Reset Prefix
############################################################################
set -g prefix C-a
bind-key a send-prefix # for nested tmux sessions
############################################################################
# Global options
############################################################################
# large history
set-option -g history-limit 10000
# colors
setw -g mode-bg black
set-option -g default-terminal "screen-256color" #"xterm-256color" # "screen-256color"
set-option -g pane-active-border-fg green
# utf8 support
set-window-option -g utf8 on
# basic settings
set-window-option -g xterm-keys on # for vim
set-window-option -g mode-keys vi # vi key
set-window-option -g monitor-activity on
set-window-option -g window-status-current-fg white
setw -g window-status-current-attr reverse
# Automatically set window title
setw -g automatic-rename
# use mouse # More on mouse support http://floriancrouzat.net/2010/07/run-tmux-with-mouse-support-in-mac-os-x-terminal-app/
setw -g mode-mouse on
#setw -g mouse-resize-pane on
#set -g mouse-select-window on
set -g mouse-select-pane on
set -g terminal-overrides 'xterm*:smcup@:rmcup@'
# vi movement keys
# set-option -g status-keys vi
############################################################################
# Status Bar
############################################################################
set-option -g status-utf8 on
set-option -g status-justify right
set-option -g status-bg black # colour213 # pink
set-option -g status-fg cyan
set-option -g status-interval 5
set-option -g status-left-length 30
set-option -g status-left '#[fg=magenta]» #[fg=blue,bold]#T#[default]'
set-option -g status-right '#[fg=red,bold][[ #(git branch) branch ]] #[fg=cyan]»» #[fg=blue,bold]###S #[fg=magenta]%R %m-%d#(acpi | cut -d ',' -f 2)#[default]'
set-option -g visual-activity on
# Titles (window number, program name, active (or not)
set-option -g set-titles on
set-option -g set-titles-string '#H:#S.#I.#P #W #T'
############################################################################
# Unbindings
############################################################################
#unbind [ # copy mode bound to escape key
unbind j
unbind C-b # unbind default leader key
unbind '"' # unbind horizontal split
unbind % # unbind vertical split
############################################################################
# Bindings
############################################################################
# reload tmux conf
bind-key r source-file ~/.tmux.conf
#bind Escape copy-mode
# new split in current pane (horizontal / vertical)
bind-key - split-window -v # split pane horizontally
bind-key \ split-window -h # split pane vertically
# list panes
bind-key Space list-panes
# break-pane
bind-key Enter break-pane
# join-pane [-dhv] [-l size | -p percentage] [-s src-pane]
# [-t:dst-window.dst-pane] (destination window (dot) destination pane
# (alias: joinp)
#
#bind C-j command-prompt "joinp"
#bind C-j command-prompt "join-pane"
#bind-key j command-prompt "join-pane -s '%%'"
#bind-key j command-prompt "joinp -t:0"
bind-key Space command-prompt "joinp -t:%%" # %% = prompt for window.pane [-V|H] # vert|hor split
#previous pane
bind-key -n C-up prev
bind-key -n C-left prev
#next pane
bind-key -n C-right next
bind-key -n C-down next
############################################################################
# windows
############################################################################
set-window-option -g window-status-current-bg red
bind C-j previous-window
bind C-k next-window
bind-key C-a last-window # C-a C-a for last active window
bind A command-prompt "rename-window %%"
# By default, all windows in a session are constrained to the size of the
# smallest client connected to that session,
# even if both clients are looking at different windows.
# It seems that in this particular case, Screen has the better default
# where a window is only constrained in size if a smaller client
# is actively looking at it.
setw -g aggressive-resize on
############################################################################
# panes
############################################################################
# Navigation ---------------------------------------------------------------
# use the vim motion keys to move between panes
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R
# Resizing ---------------------------------------------------------------
bind-key C-h resize-pane -L
bind-key C-j resize-pane -D
bind-key C-k resize-pane -U
bind-key C-l resize-pane -R
# use vim motion keys while in copy mode
setw -g mode-keys vi
############################################################################
# layouts
############################################################################
bind o select-layout "active-only"
bind M-- select-layout "even-vertical"
bind M-| select-layout "even-horizontal"
bind M-r rotate-window
# focus on first window
# select-window -t 0
#!/bin/bash
# Setup a work space called `WEBRTC` with 5 windows 1-2-2
# first window has 1 pane.
# The first pane set at 65%, split vertically, set to root and running vim
# pane 2 is split vertically at 25% and 50% horizontally running `npm run watch/styles`
# pane 3 is split vertically at 25% and 50% horizontally running `npm run watch/scripts`
# pane 3 is split vertically at 10% and 50% horizontally running `npm run watch/templates`
# pane 4 is split vertically at 10% and 50% horizontally running `npm run watch/browser`
# note: `api` aliased to `cd ~/path/to/work`
session='WEBRTC2'
# set up tmux
tmux start-server
# create a new tmux session, starting vim from a saved session in the new window
tmux new-session -d -s $session -n OPERATOR
# # Select pane 1 run vim
#tmux select-pane -t :0
tmux send-keys "pwd; vim -c 'NERDTree'" C-m
#tmux split-window -t 0 -v -p 70 -c "$(pwd)"
# Split pane 1 vertically by 70%
tmux split-window -t 0 -v -p 30 -c "$(pwd)"
tmux select-pane -t 1
tmux send-keys "npm run watch/styles" C-m # watch/styles
tmux split-window -t 1 -v -p 30 -c "$(pwd)"
tmux select-pane -t 2
tmux send-keys "npm run watch/templates" C-m # watch/templates
tmux split-window -t 1 -h -p 40 -c "$(pwd)"
tmux select-pane -t 3
tmux send-keys "pwd;npm run watch/scripts" C-m # watch/scripts
tmux split-window -t 2 -h -p 40 -c "$(pwd)"
tmux select-pane -t 4
tmux send-keys "pwd;npm run watch/browser" C-m # watch/browser
tmux -2 attach -t $session

is there any config to let select/copy text ?

Owner

snuggs commented Apr 23, 2014

@alexserver Good question. Let me know if you find such a configuration setting. :-)

adham90 commented May 17, 2014

where "ctrl+b" and "shift+:"

tsn77130 commented Oct 8, 2015

great, thanks

sumonto commented Feb 19, 2016

On Mac OS, I am unable to double click and select a word or line to copy text etc.
I am on tmux --head

my .tmux.conf contains:

set-option -g mouse on

set -g mode-mouse on

set -g mouse-select-pane on

set -g mouse-select-window on

setw -g mouse-resize-pane on

set -g terminal-overrides 'xterm*:smcup@:rmcup@'

Appreciate any help :)
Thanks.

hey, a question: what does the status-keys do? I don't see a change between emacs and vi. Could someone please give me a hint?

@sumoto:
Have you tried "option+mouse-select"?

Thank you for this!

Owner

snuggs commented Dec 15, 2016

@ryanjohnston @sumoto @dragonxlwang WOW that awkward moment when you check out old gists and see comments showing appreciation. Talk about made my day!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment