Allow specifying path to tmux socket.
[profile.git] / .tmux.conf
index dd5202a..e383a37 100644 (file)
@@ -31,8 +31,6 @@ set -g prefix C-p
 unbind C-b
 bind C-p last-window
 bind p send-keys C-p
-bind C-l refresh-client
-bind l refresh-client
 bind S split-window -v
 bind | split-window -h
 bind C-[ copy-mode
@@ -48,17 +46,22 @@ bind > command-prompt -p "Save buffer to file:" 'save-buffer %1'
 ################################################################################
 # Up and down like Vim.
 bind j select-pane -D
-bind C-j select-pane -D
+bind -r C-j select-pane -D
 bind k select-pane -U
-bind C-k select-pane -U
+bind -r C-k select-pane -U
+# Don't let arrow keys repeat.
+bind Up select-pane -U
+bind Down select-pane -D
+bind Left select-pane -L
+bind Right select-pane -R
 # Previous and next panes kinda like Vim.
 bind h select-pane -L
-bind C-h select-pane -L
+bind -r C-h select-pane -L
 bind l select-pane -R
-bind C-l select-pane -R
+bind -r C-l select-pane -R
 # And for windows.
-bind H previous-window
-bind L next-window
+bind -r H previous-window
+bind -r L next-window
 # Last window like Vim.
 bind ^ last-window
 bind C-^ last-pane
@@ -66,24 +69,40 @@ bind C-^ last-pane
 bind J select-pane -D
 bind K select-pane -U
 # Swap panes.
-bind w swap-pane
+bind o swap-pane -D
+bind -r C-o swap-pane -D
+bind -r O swap-pane -U
+bind w command-prompt -p "Select [<window>.]<pane> to swap:" 'swap-pane -s . -t %1'
+# Swap windows.
+bind W choose-window "swap-window -t '%%'"
 # Show panes.
 bind = display-panes
 # Move the current pane into a separate window.
 bind b break-pane
 # Split another pane into this window.
-bind B command-prompt -p "Select [<window>.]<pane> to join:" 'join-pane -s %1'
+bind B command-prompt -p "Select <window>[.<pane>] to join:" 'join-pane -s %1'
 # Split vertically.
 bind C-\ split-window -v
 # Next pane.
 bind i select-pane -t :.+
-bind C-i select-pane -t :.+
-bind I select-pane -t :.-
+bind -r C-i select-pane -t :.+
+bind -r I select-pane -t :.-
+# Resize pane.
+bind -r C-M-h resize-pane -L
+bind -r C-M-j resize-pane -D
+bind -r C-M-k resize-pane -U
+bind -r C-M-l resize-pane -R
 # Layouts.
-bind . select-layout even-vertical
-bind , select-layout tiled
+bind , select-layout even-vertical
+bind . select-layout even-horizontal
+bind / select-layout tiled
+bind M-, select-layout main-vertical
+bind M-. select-layout main-horizontal
+bind Space next-layout
+bind -r C-Space next-layout
 # Simulate maximising the window.
-bind / select-layout even-vertical \; swap-pane -s top \; resize-pane -D 9999
+bind / select-layout main-horizontal \; resize-pane -D 9999
+bind M-/ select-layout tiled
 # Select windows.
 bind - choose-window
 bind M-0 select-window -t 10
@@ -113,7 +132,7 @@ bind { copy-mode -u
 # XXX: As of tmux 1.3 this doesn't work.
 #bind '"' choose-buffer 'show-buffer -b %%'
 bind '"' list-buffers \; command-prompt -p "Choose buffer to show:" 'show-buffer -b %1'
-bind "'" show-buffer
+bind "'" new-window -n "[buffer]" "cat > /dev/null" \; paste-buffer
 # Toggle mouse mode as it is useful despite the flaws listed above.
 bind C-m set -g mouse-resize-pane \; set -g mouse-select-pane \; set -g mouse-select-window \; set -g mode-mouse