Skip to content

Instantly share code, notes, and snippets.

@spicycode
Created September 20, 2011 16:43
Show Gist options
  • Save spicycode/1229612 to your computer and use it in GitHub Desktop.
Save spicycode/1229612 to your computer and use it in GitHub Desktop.
The best and greatest tmux.conf ever
# 0 is too far from ` ;)
set -g base-index 1
# Automatically set window title
set-window-option -g automatic-rename on
set-option -g set-titles on
#set -g default-terminal screen-256color
set -g status-keys vi
set -g history-limit 10000
setw -g mode-keys vi
setw -g mode-mouse on
setw -g monitor-activity on
bind-key v split-window -h
bind-key s split-window -v
bind-key J resize-pane -D 5
bind-key K resize-pane -U 5
bind-key H resize-pane -L 5
bind-key L resize-pane -R 5
bind-key M-j resize-pane -D
bind-key M-k resize-pane -U
bind-key M-h resize-pane -L
bind-key M-l resize-pane -R
# Vim style pane selection
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Use Alt-vim keys without prefix key to switch panes
bind -n M-h select-pane -L
bind -n M-j select-pane -D
bind -n M-k select-pane -U
bind -n M-l select-pane -R
# Use Alt-arrow keys without prefix key to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Shift arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window
# No delay for escape key press
set -sg escape-time 0
# Reload tmux config
bind r source-file ~/.tmux.conf
# THEME
set -g status-bg black
set -g status-fg white
set -g window-status-current-bg white
set -g window-status-current-fg black
set -g window-status-current-attr bold
set -g status-interval 60
set -g status-left-length 30
set -g status-left '#[fg=green](#S) #(whoami)'
set -g status-right '#[fg=yellow]#(cut -d " " -f 1-3 /proc/loadavg)#[default] #[fg=white]%H:%M#[default]'
@cmdcolin
Copy link

I'm a fan of the wttr.in tmux status line...it's just fun

set -g status-left '#(curl "wttr.in/?format=3") '

@ScottA38
Copy link

ScottA38 commented Jun 2, 2019

Shift arrow to switch windows works a treat, cheers.

But the "Alt-arrow keys without prefix key to switch panes" I can't seem to get working?
I'm on OSX, iTerm2, and no matter what key I hold plus arrow, it doesn't switch panes?

@IanVaughan I have been experiencing the same issue on mac - it is explained here: https://askubuntu.com/questions/109293/editing-with-nano-alt-is-caught-by-the-window-menus-how-can-i-fix-that

I am not sure if there is a workaround but I am just going to stick with esc instead of alt in tmux for now

@flajann2
Copy link

Most interesting. I should share my own .tmux.conf. :) In fact, tmux and tmuxinator is something I use all the time, and is an unbeatable combination.

In fact, I should not only share my tmux, but also my emacs config and bash setup. If anyone's interested, please let me know.

@AvinashMV
Copy link

Sorry , am new to tmux. I used this file in my Mac. Some of them doesn't seem to work. Can anyone help?

@s4ln1x
Copy link

s4ln1x commented Aug 29, 2019

Thanks!

@sacgov
Copy link

sacgov commented Oct 30, 2019

In case anyone uses this for 2.9a versions and later and it doesn't work. This is the update needed
set -g window-status-current-style bg=white,fg=black,bold

@schadha17
Copy link

Use Alt-arrow keys without prefix key to switch panes

bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

These don't work in MAC OSX. Please help!

@ScottA38
Copy link

ScottA38 commented Jan 16, 2020

Use Alt-arrow keys without prefix key to switch panes

bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

These don't work in MAC OSX. Please help!

@schadha17 you could try this instead, provided you don't already use these keys within tmux:
`

 bind -n Home select-pane -L

 bind -n End select-pane -R

 bind -n Pageup select-pane -U

 bind -n Pagedown select-pane -D

`
(They are the arrow keys but using 'fn' instead. The 'M' (alt) key does not really play ball with any shortcuts inside of tmux or text editors seemingly - see my above comment)

@Axiangel
Copy link

Axiangel commented Feb 4, 2020

Looks great man. I cannot however for the love of my life understand how i can paste text from clipboard into nano or vim using this conf. Can anyone please help me?

@cerebrux
Copy link

cerebrux commented Feb 4, 2020

Looks great man. I cannot however for the love of my life understand how i can paste text from clipboard into nano or vim using this conf. Can anyone please help me?

Use Ctrl+Shift+V to paste in terminal (vim or nano)

@PhilDim1
Copy link

Looks great man. I cannot however for the love of my life understand how i can paste text from clipboard into nano or vim using this conf. Can anyone please help me?

Try Shift-Insert to paste.

@HadowStark
Copy link

Looks great man. I cannot however for the love of my life understand how i can paste text from clipboard into nano or vim using this conf. Can anyone please help me?

Try press the Shift before you paste your text.

@HadowStark
Copy link

Not having a success getting the window switching to work.
Any suggestions for a Tmux 2.4 newb?

# Shift arrow to switch windows
bind -n S-Left  previous-window
bind -n S-Right next-window

I have the same question, anyone help?

@ethereal-sandeep
Copy link

set -g window-status-current-style bg=white,fg=black,bold

Thanks man !

@whyDontI
Copy link

Can someone explain about the bottom right status information.
What is being displayed there with time?

BTW the its the best conf!
Thanks man

@helloEmsah
Copy link

Can someone explain about the bottom right status information.
What is being displayed there with time?

BTW the its the best conf!
Thanks man

I believe it's CPU load

@whyDontI
Copy link

yeah figured its /proc/loadavg

@disus
Copy link

disus commented Sep 1, 2020

Thank you for sharing! For those poor souls, like me, who have found themselves beating their heads against the wall (or other hard surfaces) after trying an unholy amounts [ and combinations ] of key bindings, including reserving to utilizing AutoHotKey scripts, while utilizing Windows Terminal - there is a cure!

You will have to un-bind the default actions from the key combinations in the settings.json. Example :

{ "command": { "action": "", "input": "" }, "keys": [ "alt+up" ] },
{ "command": { "action": "", "input": "" }, "keys": [ "alt+down" ] }

I am not sure if it works on all versions (in my case, version 1.2.2381.0). However, hopefully this tip will give the suffering individuals a direction at root of the cause => to check if their CLI/Terminal app is hijacking the commands.

Cheers.

@premanuj
Copy link

mode-mouse option is no more availble in new version. Instead you can use set -g mouse on at line 13.

@hasparus
Copy link

hasparus commented Oct 2, 2020

I love this thread. Thank you so much @premanuj, @juvenal, @spicycode 🙇‍♂️

@h4n0sh1
Copy link

h4n0sh1 commented Jan 11, 2021

Posted 9 years ago, and still the best game in town !

This conf. is almost perfect, it only needs the copy/paste feature, so for anybody reading this hopefully this spares you some time searching :

# Enable mouse & Copy/Paste - Requirements: xclip  
set -g mouse on 
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
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -T copy-mode-vi    C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-vi    C-WheelDownPane send-keys -X halfpage-down
bind -T copy-mode-emacs C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down
# # Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection c"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"

Source : https://unix.stackexchange.com/questions/318281/how-to-copy-and-paste-with-a-mouse-with-tmux

@alfiedotwtf
Copy link

alfiedotwtf commented Mar 29, 2021

I've been using tmux for about 12 years, and I was today years old that I even thought to remap selecting panes. Omg this gist is amazing.

@bartoszek
Copy link

bartoszek commented May 22, 2021

Pretty nice, but rescaling with hjkl is suboptimal.
My proposition: use -r C-{hjkl} to allow resizing by holding ctrl and pressing b+jjj (-r indicate repeatable key )

bind-key -r C-j resize-pane -D
bind-key -r C-k resize-pane -U
bind-key -r C-h resize-pane -L
bind-key -r C-l resize-pane -R

Also adding -r to the walk bindings improves my work routine a lot. 😏

@SiddharthShyniben
Copy link

The only problem I had was that the left and right arrow keys send b and f respectively, so I did this:

# Use Alt-arrow keys without prefix key to switch panes
bind -n M-b select-pane -L
bind -n M-f select-pane -R
# ....

This might fix what @schadha17 and @IanVaughan are facing?

@dedeibel
Copy link

dedeibel commented Oct 4, 2021

Very cool. How about set -g mouse-select-pane to allow selecting panes using the mouse? (1.8)

@dodona2
Copy link

dodona2 commented Oct 5, 2021

Very cool. How about set -g mouse-select-pane to allow selecting panes using the mouse? (1.8)
works in xterm, however not in linux consoles

@dedeibel
Copy link

dedeibel commented Oct 5, 2021

Very cool. How about set -g mouse-select-pane to allow selecting panes using the mouse? (1.8)

works in xterm, however not in linux consoles

Okay, thanks for the info. That was not in my focus.

@alfiedotwtf
Copy link

Sadly I found mouse-select-pane broke my ability to copy/paste with my urxvt+Vim combo

@amirgon
Copy link

amirgon commented Jan 26, 2022

Incompatible with tmux >= 2.9 (invalid option errors).
Related: tmux/tmux#1689

@kevomac12
Copy link

Hey guys, I'm back in Linux after 10+ yrs and this site...Great stuff! I need help w/TMUX, as it has really helped out w/SSD testing and debug, even though I'd only use it occasionally. But now I'm at Ricoh, and I've got 20+ dev machines to use. I need help with where to place my tmux.conf or how to set environment (Linux) so I can source (source ~/.tmux.conf) when I've done mods to that file...Please can you help??

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