Initial tmux configuration.
authorIain Patterson <me@iain.cx>
Thu, 30 Sep 2010 13:05:00 +0000 (14:05 +0100)
committerIain Patterson <me@iain.cx>
Fri, 1 Oct 2010 10:47:12 +0000 (11:47 +0100)
Try to emulate screen in areas where screen works well.
Set a consistent colour scheme.
Use Vim-like key bindings where possible.

.tmux.conf [new file with mode: 0644]

diff --git a/.tmux.conf b/.tmux.conf
new file mode 100644 (file)
index 0000000..4e5fda4
--- /dev/null
@@ -0,0 +1,157 @@
+################################################################################
+# Options.
+################################################################################
+# Use vi keys for scrolling etc.
+# Use lsk -t vi|emacs-<table> to see binds in table choice, copy or edit.
+setw -g mode-keys vi
+set -g status-keys vi
+
+# Don't wait so long to parse escape sequences.
+set -s escape-time 100
+
+# Ensure KRB5CCNAME is preserved in the environment.
+set -g update-environment 'DISPLAY WINDOWID SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION KRB5CCNAME'
+
+# Clock.
+setw -g clock-mode-colour white
+setw -g clock-mode-style 24
+
+################################################################################
+# Screen compatibility.
+################################################################################
+set -g prefix C-p
+unbind C-b
+bind C-p last-window
+bind C-l refresh-client
+bind l refresh-client
+bind S split-window -v
+bind | split-window -h
+bind C-[ copy-mode
+bind ] paste-buffer
+bind C-] paste-buffer
+bind _ setw monitor-activity
+bind * list-clients
+bind < command-prompt -p "Load buffer from file:" 'load-buffer %1'
+bind > command-prompt -p "Save buffer to file:" 'save-buffer %1'
+
+################################################################################
+# Hotkeys.
+################################################################################
+# Up and down like Vim.
+bind j select-pane -D
+bind C-j select-pane -D
+bind k select-pane -U
+bind C-k select-pane -U
+# Previous and next window kinda like Vim.
+bind h previous-window
+bind C-h previous-window
+bind l next-window
+bind C-l next-window
+# And for panes.
+bind H select-pane -L
+bind L select-pane -R
+# Top and bottom.
+bind J select-pane -t bottom
+bind K select-pane -t top
+# Swap panes.
+bind w swap-pane
+# 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 -t %1'
+# Next pane.
+bind i select-pane -t :.+
+bind C-i select-pane -t :.+
+bind I select-pane -t :.-
+# Layouts.
+bind . select-layout even-vertical
+bind , select-layout tiled
+# Simulate maximising the window.
+bind / select-layout even-vertical \; swap-pane -s top \; resize-pane -D 9999
+# Show windows
+bind - list-windows
+# Set current window title.
+bind t command-prompt -p "Set window's title to:" 'rename-window %1'
+# Show clock.
+bind T clock-mode
+# Monitor window for a particular string.
+bind m command-prompt -p "Monitor:" 'setw monitor-content %1'
+bind M setw monitor-content ""
+# Synchronise input.
+bind \; setw synchronize-panes
+# Choose buffer to paste.
+bind } choose-buffer 'paste-buffer -b %%'
+# Enter copy-mode and scroll up.
+bind { copy-mode -u
+# Choose buffer to show.
+# 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
+
+################################################################################
+# Fix missing binds in Vi modes.
+################################################################################
+# Command prompt.
+bind -t vi-edit C-u delete-line
+# We can't delete a word so ^w can clear the whole line for now.
+bind -t vi-edit C-w delete-line
+bind -t vi-edit Up history-up
+bind -t vi-edit Down history-down
+bind -t vi-edit Left cursor-left
+bind -t vi-edit Right cursor-right
+# Copy mode.
+bind -t vi-copy y copy-selection
+
+################################################################################
+# Terminal settings.
+################################################################################
+set -g default-terminal 'screen-256color'
+# PuTTY needs help to set bold colours.
+set -g terminal-overrides 'putty-256color:C8'
+
+################################################################################
+# Window and pane settings.
+################################################################################
+set -g display-panes-time 1000
+set -g display-panes-active-colour white
+set -g display-panes-colour colour17
+# Command entry.
+set -g message-bg colour90
+set -g message-fg white
+# Active pane
+set -g pane-active-border-bg default
+set -g pane-active-border-fg white
+# Inactive pane.
+set -g pane-border-bg default
+set -g pane-border-fg colour17
+# Messages.
+setw -g mode-bg blue
+setw -g mode-fg white
+# Monitored windows (in reverse video).
+setw -g window-status-alert-bg red
+setw -g window-status-alert-fg white
+
+################################################################################
+# Caption settings.
+################################################################################
+# Don't update the title bar.
+set -g set-titles off
+# Status line black on white.
+set -g status-attr none
+set -g status-bg white
+set -g status-fg black
+# Current window white on blue.
+setw -g window-status-current-attr none
+setw -g window-status-current-bg colour17
+setw -g window-status-current-fg white
+# No border.
+set -g status-left ''
+set -g status-right ''
+# Window flags.
+setw -g window-status-current-format '[#I.#P#F #W]'
+setw -g window-status-format ' #I.#P#F #W '
+# Don't set window name.  XXX: Issue with PROMPT_COMMAND.
+#setw -g automatic-rename off