| # Time-stamp: <2018-05-31 17:10:05 kmodi> |
| # https://github.com/tmux/tmux |
| # Hi-lock: (("\\(^\\s< \\**\\)\\(\\* *.*\\)" (1 'org-hide prepend) (2 '(:inherit org-level-1 :height 1.3 :weight bold :overline t :underline t) prepend))) |
| # Hi-Lock: end |
| |
| # Running tmux built from master branch on tcsh in uxterm |
| # tmux version 2.5-RC+ dev |
| |
| # Contents: |
| # |
| # PREFIX |
| # Source config |
| # Pane Management |
| # Window <-join/split-> Pane |
| # Select Panes |
| # Resize Panes |
| # Dynamic Split |
| # Window Management |
| # Window Navigation |
| # Swap Windows |
| # Split Window |
| # Layout |
| # Session Management |
| # Mouse |
| # Drag pane border to resize |
| # Left click on pane |
| # Middle click on pane |
| # Right click on pane |
| # Wheel scroll in pane |
| # Wheel scroll in pane WHILE in copy-mode |
| # Left click on status |
| # Middle click on status |
| # Other mouse settings |
| # Window Title |
| # Status Bar |
| # Left Status |
| # Right Status |
| # Pane Status |
| # Colors |
| # Status Bar Colors |
| # Message Colors |
| # Window Status Colors |
| # Pane Colors |
| # Mode Info Colors |
| # Activity |
| # Command Prompt |
| # Audible and Visual Bells |
| # Copy & Paste |
| # Synchronize commands to panes/windows/sessions |
| # Terminal Setting |
| # Other Options |
| # Server Options |
| # Session Options |
| # Window Options |
| # Notes |
| |
| # * PREFIX |
| set -g prefix C-z |
| unbind C-b # unbind the default binding to send prefix key to the application |
| # Often you'll run a tmux inside another tmux and need a command sequence to |
| # send things to the inner session. With below binding that can be accomplished |
| # using "PREFIX Z <command>" |
| bind Z send-prefix |
| |
| # * Source config |
| unbind r # unbind default binding to force redraw of attached client |
| bind r source-file ~/.tmux.conf \; display "Finished sourcing ~/.tmux.conf ." |
| |
| # * Pane Management |
| |
| set -g pane-base-index 1 # start pane indices at 1 |
| set -g main-pane-width 100 # used by selectl main-vertical |
| bind z resize-pane -Z # zoom/unzoom the current pane |
| # If the window has >1 panes kill them without confirming. But confirm before kill |
| # the last pane (along with its window) in a window |
| bind x if "tmux display -p \"#{window_panes}\" | grep ^1\$" \ |
| "confirm-before -p \"Kill the only pane in window? It will kill this window too! (y/n)\" kill-pane" \ |
| "kill-pane" |
| bind C clear-history \; display "Cleared history of the current pane." |
| unbind C-p |
| bind C-p run -b "tmux display -p -F '#{pane_current_path}' | xclip -i -sel pri" \; display "Copied current path '#{pane_current_path}' to the primary selection." |
| |
| # Hooks need tmux 2.3+ |
| # set-hook -g -u after-kill-pane # Remove after hook for kill-pane |
| set-hook -g after-kill-pane "selectl main-vertical" |
| # If -g options is used when setting the hook, it has to be used when |
| # removing (-u option) the hook too. |
| |
| # ** Window <-join/split-> Pane |
| # Join a pane *from* a different window (of same or different session) into the CURRENT window |
| # Binding mnemonic: F for (F)etch/pull (as in git) from a different window |
| bind F command-prompt -p "Join pane from [sess:]win#[.pane#] (ex: kmodi:3.1) into current window:" "join-pane -s '%%'" |
| # Join CURRENT pane *to* a different window |
| # Binding mnemonic: P for (P)ush (as in git) to a different window |
| bind P command-prompt -p "Send CURRENT pane to [sess:]win# (ex: kmodi:3):" "join-pane -t '%%'" |
| # PREFIX ! : break-pane, convert the current pane to a window |
| |
| # ** Select Panes |
| bind o select-pane -t :.+ # cycle to the next pane number |
| bind O select-pane -t :.- # cycle to the previous pane number |
| # PREFIX ; : last-pane or select-pane -l, switch to the last active pane |
| # PREFIX ← : select-pane -L, switch to the pane on the left |
| # PREFIX → : select-pane -R, switch to the pane on the right |
| # PREFIX ↑ : select-pane -U, switch to the pane on the top |
| # PREFIX ↓ : select-pane -D, switch to the pane on the bottom |
| # PREFIX { : swap-pane -U, swap current pane with the pane above (not literally above) |
| # PREFIX } : swap-pane -D, swap current pane with the pane below (not literally below) |
| |
| # ** Resize Panes |
| bind -r h resize-pane -L 2 |
| bind -r C-h resize-pane -L 2 |
| bind -r j resize-pane -D 2 |
| bind -r C-j resize-pane -D 2 |
| bind -r k resize-pane -U 2 |
| bind -r C-k resize-pane -U 2 |
| unbind l # unbind default binding for `last-window` |
| bind -r l resize-pane -R 2 |
| bind -r C-l resize-pane -R 2 |
| |
| # ** Dynamic Split |
| # Key-chaining example, analogous to prefix maps in emacs |
| bind / switch-client -Tlauncher |
| # Run below -Tlauncher commands using "PREFIX / <binding>" |
| # Open calendar in a split window "PREFIX / c" |
| # FIXME: Below does not work; cal pane quits as soon as it launches (before "&& sleep .." |
| # was added). To make better of the situation, I now auto-close that pane after 3 seconds. |
| # bind -Tlauncher c split-window -h 'cal && sleep 3' |
| bind -Tlauncher c run "/home/kmodi/scripts/tcsh/tmux/dynamic_split.csh 'cal && sleep 3'" |
| # Start emacsclient in terminal mode in a split window "PREFIX / e" |
| # Use the emacs binding "C-x 5 0" to quit from that pane gracefully. |
| bind -Tlauncher e run "/home/kmodi/scripts/tcsh/tmux/dynamic_split.csh 'emacsclient -a \"\" -t'" |
| # Open man page "PREFIX / m" |
| # PREFIX / m will bring up the tmux command prompt. Enter the command for which |
| # you want to see the man page, example: ls. That man page will open in a split |
| # pane. When you are done reviewing the man page, hit q and the split pane |
| # closes by itself. Beautiful! |
| bind -Tlauncher m command-prompt -p "man" "run \"/home/kmodi/scripts/tcsh/tmux/dynamic_split.csh 'man %1'\"" |
| # Open python interpreter in a split window for quick calculations "PREFIX / p" |
| # Ctrl-D in python quits python and thus closes the split window too. |
| bind -Tlauncher p run "/home/kmodi/scripts/tcsh/tmux/dynamic_split.csh 'ipython --profile=default --no-confirm-exit'" |
| # PREFIX Up, Down, Right, Left : Move cursor from one pane to another |
| # PREFIX Space : Cycle through different pane layouts |
| # PREFIX C-o : rotate-window, rotate panes in the current window |
| |
| # * Window Management |
| set -g base-index 1 # start window indices at 1 |
| # automatically renumber the windows |
| # http://unix.stackexchange.com/questions/21742/renumbering-windows-in-tmux |
| set -g renumber-windows on |
| |
| bind C-f command-prompt -p "New window:" "new-window -c '#{pane_current_path}' -n %1" |
| bind C-r command-prompt -p "New name for this window:" "rename-window '%%'" |
| unbind L # unbind default binding for `switch-client -l` |
| bind L list-windows -F '#{window_index}:#{window_name}: #{?pane_dead, (dead), (not dead)}' |
| unbind & # unbind default binding for `kill-window` |
| bind C-c confirm-before -p "Kill this window? (y/n)" kill-window |
| # Move the current window to another window index in the same or any other session |
| bind m command-prompt -p "Move window to sess or sess:win# or win# (ex: kmodi or kmodi:3 or 2(of current session)):" "move-window -t '%%'" |
| # Move or bring a window from a different session to the current one |
| bind M command-prompt -p "Move the window from sess:win# (ex: kmodi:3):" "move-window -s '%%'" |
| |
| # ** Window Navigation |
| bind C-z last-window # switch to last active window |
| # Allow repeats for next/previous-window |
| bind -r p previous-window |
| bind -r n next-window |
| # switch to another window by name |
| bind W split-window "tmux lsw | peco --initial-index `tmux lsw | awk '/active.$/ {print NR-1}'` | cut -d':' -f 1 | xargs tmux select-window -t" |
| # PREFIX <N> : switches to window with index=N |
| |
| # ** Swap Windows |
| bind N move-window -r # renumber the windows |
| unbind , # unbind default binding for `rename-window` |
| bind -r , swap-window -t -1 # move window one position to the left |
| bind -r < swap-window -t -1 # move window one position to the left |
| unbind . # unbind default binding to move window to user provided index |
| bind -r . swap-window -t +1 # move window one position to the right |
| bind -r > swap-window -t +1 # move window one position to the right |
| unbind t # unbind default binding to show time |
| bind t swap-window -t 1 # swap the current window's position with window # 1, move it to the top |
| |
| # ** Split Window |
| unbind & # unbind default binding for `split-window -h` |
| bind - split-window -v -c '#{pane_current_path}' # vertical split |
| bind _ split-window -v -c '#{pane_current_path}' -f # full vertical split (v2.3+) |
| bind \ split-window -h -c '#{pane_current_path}' # horizontal split |
| bind | split-window -h -c '#{pane_current_path}' -f # full horizontal split (v2.3+) |
| # https://www.reddit.com/r/tmux/comments/3paqoi/tmux_21_has_been_released/cw5wy00 |
| bind w switch-client -Tsplit_wind |
| bind -Tsplit_wind v split-window -v -c '#{pane_current_path}' |
| bind -Tsplit_wind V split-window -v -c '#{pane_current_path}'\; swap-pane -U |
| bind -Tsplit_wind h split-window -h -c '#{pane_current_path}' |
| bind -Tsplit_wind H split-window -h -c '#{pane_current_path}'\; swap-pane -U |
| |
| # ** Layout |
| bind Space next-layout |
| bind C-Space select-layout -o # undo only the last layout change #v2.1 |
| |
| # * Session Management |
| bind C-t command-prompt -p "New name for this session:" "rename-session '%%'" |
| bind b switch-client -l # switch to previously selected session |
| # switch to another session by name |
| bind S split-window "tmux ls | peco --initial-index `tmux ls | awk '/attached.$/ {print NR-1}'` | cut -d':' -f 1 | xargs tmux switch-client -t" |
| # switch to ANY window in ANY session by name |
| bind s split-window "tmux ls | cut -d: -f1 | xargs -I SESSION tmux lsw -F 'SESSION:#{window_name}' -t SESSION | peco --initial-index `tmux ls | cut -d: -f1 | xargs -I SESSION tmux lsw -F '___#{session_attached}#{window_active}___' -t SESSION | awk '/___11___/ {print NR-1}'` | xargs tmux switch-client -t" |
| # tmux kill-session -t NAME/SESSIONNUMBER # Kill session |
| |
| # * Mouse |
| # setw -g mode-mouse on # incompatible in tmux 2.1+ |
| set -g mouse on |
| |
| # ** Drag pane border to resize |
| # set -g mouse-resize-pane off # incompatible in tmux 2.1+ |
| bind -T root MouseDrag1Border resize-pane -M # default |
| # unbind -T root MouseDrag1Border # disable drag pane border to resize |
| |
| bind -T root MouseDrag1Pane if -Ft= '#{mouse_any_flag}' 'if -Ft= "#{pane_in_mode}" "copy-mode -M" "send-keys -M"' 'copy-mode -M' # default |
| |
| # ** Left click on pane |
| # set -g mouse-select-pane on # incompatible in tmux 2.1+ |
| # Left click on a pane selects it |
| # bind -T root MouseDown1Pane select-pane -t=\; send-keys -M # default |
| bind -T root MouseDown1Pane select-pane -t= |
| |
| # Sun Feb 19 11:31:34 EST 2017 - kmodi |
| # Below break in tmux 2.4 |
| # # Fri Aug 26 18:35:21 EDT 2016 - kmodi |
| # # FIXME Need to remember why I unbound the below 2 bindings |
| # unbind -temacs-copy MouseDown1Pane |
| # unbind -temacs-copy MouseUp1Pane |
| # # |
| |
| # https://groups.google.com/forum/#!topic/tmux-users/mHhdx7Au0Ds |
| # Fri Aug 26 18:30:15 EDT 2016 - kmodi |
| # Do not do the below!! That will update the primary selection with the top-most |
| # tmux buffer each time you left click on a pane. |
| # bind -T root MouseUp1Pane run -b "tmux show-buffer | xclip -i -sel pri" |
| # |
| |
| # Left click in the pane *followed after a region selection* copies that to the |
| # secondary selection |
| bind -T root MouseUp1Pane run -b "tmux show-buffer | xclip -i -sel sec" |
| # Fri Aug 26 19:03:57 EDT 2016 - kmodi |
| # FIXME: As of today it needs to be figured out how to best paste the content |
| # from secondary selection |
| |
| # ** Middle click on pane |
| # Middle click in a pane to paste from the primary selection |
| bind -T root MouseDown2Pane run -b "xclip -o -sel pri | tmux load-buffer - && tmux paste-buffer -s ' '" |
| |
| # ** Right click on pane |
| # Right click on a pane selects and marks it *if not in copy-mode*; else |
| # passes on the mode keys |
| # bind -T root MouseDown3Pane select-pane -t= -m # default |
| bind -T root MouseDown3Pane if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t= -m' |
| |
| # Sun Feb 19 11:32:00 EST 2017 - kmodi |
| # Below breaks in tmux 2.4 |
| # # Right click *release* on a pane *in copy-mode* quits copy-mode |
| # bind -temacs-copy MouseUp3Pane cancel |
| |
| # ** Wheel scroll in pane |
| unbind -T root WheelUpPane |
| unbind -T root WheelDownPane |
| # Do mouse wheel-up to enter copy mode and do page-up |
| # https://groups.google.com/d/msg/tmux-users/XTrSVUR15Zk/3iyJLMyQ7PwJ |
| # Below binding did not work |
| # bind -T root WheelUpPane if -Ft= '#{mouse_any_flag}' 'if -Ft= "#{pane_in_mode}" "copy-mode -u" "send-keys -M"' 'copy-mode -u' |
| # Below works and allows the WheelUpPane binding in emacs-copy table to be effective |
| bind -T root WheelUpPane if -Ft= '#{mouse_any_flag}' 'send-keys -M' 'if -Ft= "#{pane_in_mode}" "send-keys -M" "copy-mode -u"' |
| # |---------------------+-----------------------------------------+--------------------------------| |
| # | using mouse? AND .. | #{pane_in_mode} (already in copy-mode?) | action | |
| # |---------------------+-----------------------------------------+--------------------------------| |
| # | Yes | Don't care | Send the mode keys | |
| # | No | Yes | Send the mode keys | |
| # | No | No | Enable copy-mode and do PageUp | |
| # |---------------------+-----------------------------------------+--------------------------------| |
| |
| # *** Wheel scroll in pane WHILE in copy-mode |
| # Sun Feb 19 11:32:16 EST 2017 - kmodi |
| # Below breaks in tmux 2.4 |
| # # Once in copy-mode, mouse wheel scrolls scrolls by half pages |
| # bind -temacs-copy WheelUpPane halfpage-up |
| # bind -temacs-copy WheelDownPane halfpage-down |
| |
| # ** Left click on status |
| # set -g mouse-select-window on # incompatible in tmux 2.1+ |
| # Left click on a window name in status bar to select it |
| bind -T root MouseDown1Status select-window -t= # default |
| |
| # ** Middle click on status |
| # Middle click on a window name in status bar to kill it |
| bind -T root MouseDown2Status kill-window |
| |
| # ** Other mouse settings |
| # The special token ‘{mouse}’ or ‘=’ may be used as target-window or target-pane in |
| # commands bound to mouse key bindings. Example: -t = |
| |
| # * Window Title |
| set -g set-titles on |
| set -g set-titles-string '#h :: #S:W#I(#W).P#P' |
| |
| # * Status Bar |
| set -g status-interval 5 # default = 15 seconds |
| set -g status-justify centre |
| |
| # ** Left Status |
| set -g status-left-length 20 |
| # Change the left status when prefix is pressed. |
| # https://www.reddit.com/r/tmux/comments/5cm2ca/post_you_favourite_tmux_tricks_here/d9ziuy9/ |
| set -g status-left "#{?client_prefix,#[fg=yellow]prefix pressed ..,[#S]}" |
| |
| # ** Right Status |
| set -g status-right-length 20 |
| set -g status-right "%l:%M %b %d %a " |
| |
| # ** Pane Status |
| setw -g pane-border-status "bottom" |
| setw -g pane-border-format " #P #T " |
| |
| # # tmux-powerline |
| # # https://github.com/erikw/tmux-powerline |
| # set -g status-left-length 30 |
| # set -g status-right-length 30 |
| # set -g status-left "#(~/usr_local/scripts/tmux-powerline/powerline.sh left)" |
| # set -g status-right "#(~/usr_local/scripts/tmux-powerline/powerline.sh right)" |
| |
| # * Colors |
| |
| # ** Status Bar Colors |
| set -g status-style fg=colour246,bg=colour233 # default for whole status line |
| set -g status-left-style fg=white,bold,bg=colour233 |
| set -g status-right-style fg=colour75,none,bg=colour233 |
| |
| # ** Message Colors |
| set -g message-style fg=colour2,bold,bg=default |
| |
| # ** Window Status Colors |
| setw -g window-status-style default # default for all window statuses |
| setw -g window-status-last-style fg=default,bg=colour235 |
| setw -g window-status-current-style fg=white,bold,bg=colour63 |
| setw -g window-status-bell-style default |
| setw -g window-status-activity-style fg=white,none,bg=colour196 |
| # setw -g window-status-content-style fg=black,none,bg=green # incompatible with tmux 2.0+ |
| |
| # ** Pane Colors |
| setw -g pane-active-border-style fg=colour63,bg=default |
| setw -g pane-border-style fg=colour235,bg=default |
| setw -g window-active-style 'bg=#330000' # bg color of active pane |
| setw -g window-style 'bg=black' # bg color of inactive pane(s) |
| |
| # ** Mode Info Colors |
| # Color of display shown on top-right in copy-mode, highlighting |
| setw -g mode-style fg=black,bg=colour244 |
| |
| # * Activity |
| # Notify when a window has activity |
| # This quick snippet will have tmux notify you in the status area when a |
| # window has activity: |
| setw -g monitor-activity on |
| set -g visual-activity off # Display message telling that an activity happened (on/off) |
| # It lets me know that there is activity in a non-active window |
| # To try this, enter `sleep 10 && echo “Hi”` in a window and switch to |
| # another window. |
| |
| # # Notify when a window has a content alert |
| # setw -g monitor-content "--[A-Za-z][A-Za-z]sim Done--" # This string appears when a sim finishes, alert then # incompatible with tmux 2.0+ |
| # # setw -g monitor-content "" # Disable monitor-content |
| # set -g visual-content on # Display message telling that a content alert was triggered (on/off) # incompatible with tmux 2.0+ |
| |
| # * Command Prompt |
| # Move focus to command prompt. tmux commands can be entered there directly |
| # without using the `tmux` prefix and it also supports auto-complete. |
| bind C-x command-prompt # default command-prompt binding "PREFIX :" also works |
| |
| # * Audible and Visual Bells |
| set -g bell-action any |
| set -g bell-on-alert off |
| set -g visual-bell on |
| |
| # * Copy & Paste |
| set -g set-clipboard off # default is on |
| |
| # Copy tmux buffer to primary and clipboard selections |
| # run -b runs a shell command in background |
| # http://grota.github.io/blog/2012/05/08/tmux-clipboard-integration/ |
| bind C-w run -b "tmux show-buffer | xclip -i -sel pri && tmux show-buffer | xclip -i -sel cli" |
| # Fri Aug 26 18:41:30 EDT 2016 - kmodi |
| # Below binding was suggested by Nicholas Marriott |
| # But the my older binding works fine so I am commenting out below for now. |
| # bind C-w run "tmux saveb - | xclip -i -sel pri; tmux saveb - | xclip -i -sel cli" |
| # Paste into tmux; also replace LF characters with |
| # space as separator characters (-s) when pasting. |
| # Yank from primary |
| bind C-y run -b "xclip -o -sel pri | tmux load-buffer - && tmux paste-buffer -s ' '" |
| # Yank from clipboard |
| bind M-y run -b "xclip -o -sel cli | tmux load-buffer - && tmux paste-buffer -s ' '" |
| # Open the file/dir path that was copied by selection in existing emacs client |
| # Usage: Highlight a file name in ls output and press "PREFIX e" |
| bind e run -b "tmux show-buffer | xclip -i -sel pri; (emacsclient -a '' `tmux display -p '#{pane_current_path}'`/`xclip -o -sel pri `&)" |
| |
| # * Synchronize commands to panes/windows/sessions |
| # Send the same command to all panes in the same window |
| bind C-a command-prompt -p "Command to all panes in this window:" \ |
| "run \"tmux list-panes -F '##{pane_index}' | xargs -I PANE \ |
| tmux send-keys -t PANE '%1' Enter\"" |
| # Alternative to using the above "C-a" binding is to enable pane synchronization, |
| # type the command you want to execute in all panes in the same window and disable |
| # pane synchronization |
| # Also turn the pane borders red while pane synchronization is enabled. |
| # - https://www.reddit.com/r/tmux/comments/5cm2ca/post_you_favourite_tmux_tricks_here/d9y6jzu/ |
| bind C-s if -F '#{pane_synchronized}' \ |
| 'setw synchronize-panes off; \ |
| setw pane-active-border-style fg=colour63,bg=default; \ |
| setw pane-border-format " #P #T "' \ |
| 'setw synchronize-panes on; \ |
| setw pane-active-border-style fg=red; \ |
| setw pane-border-format " #P - Pane Synchronization ON "' |
| # So it would be: C-s <type the command RET> C-s |
| |
| # https://scripter.co/command-to-every-pane-window-session-in-tmux/ |
| # Send the same command to all panes/windows in the current session |
| bind C-e command-prompt -p "Command:" \ |
| "run \"tmux list-panes -s -F '##{session_name}:##{window_index}.##{pane_index}' \ |
| | xargs -I PANE tmux send-keys -t PANE '%1' Enter\"" |
| |
| # Send the same command to all panes/windows/sessions |
| bind E command-prompt -p "Command:" \ |
| "run \"tmux list-panes -a -F '##{session_name}:##{window_index}.##{pane_index}' \ |
| | xargs -I PANE tmux send-keys -t PANE '%1' Enter\"" |
| |
| # * Terminal Setting |
| |
| # From `man tmux', about `default-terminal' |
| # Set the default terminal for new windows created in this session - the default |
| # value of the TERM environment variable. For tmux to work correctly, this must |
| # be set to ‘screen’, ‘tmux’ or a derivative of them. |
| # set -g default-terminal "screen" |
| set -g default-terminal "screen-256color" |
| # Mon May 22 11:43:56 EDT 2017 - kmodi |
| # Blinking text (useful to show broken symlinks in ls) does not work when using tmux-24bits. |
| # set -g default-terminal "tmux-24bits" |
| # tmux-24bits is a custom terminfo profile created using the steps explained |
| # on https://github.com/ThomasAdam/tmux/blob/master/FAQ to support italics and |
| # 256 colors. |
| |
| # Enable 24-bit color |
| # https://sunaku.github.io/tmux-24bit-color.html |
| set -ga terminal-overrides ",screen-256color:Tc" |
| # set -ga terminal-overrides ",tmux-24bits:Tc" |
| |
| # Thu May 31 17:10:04 EDT 2018 - kmodi |
| # TODO: Try the 24-bit emacs+tmux config for ST |
| # https://www.reddit.com/r/emacs/comments/8ndm2x/gnu_emacs_261_24bit_colors_suckless_st_terminal/dzwh4vv/ |
| # set -g default-terminal "tmux-256color" |
| # set -ga terminal-overrides ",*256col*:Tc" |
| # |
| |
| setw -g xterm-keys on |
| |
| # Uncomment below when using st (by suckless.org) |
| # set -g default-terminal "st-256color" |
| # # https://sunaku.github.io/tmux-24bit-color.html |
| # # st supports 24-bit color, so enable support for that in tmux |
| # set -ga terminal-overrides ",st-256color:Tc" |
| # setw -g xterm-keys off |
| |
| bind R refresh-client |
| # bind R refresh-client \; display "Refreshed the client." |
| |
| # * Other Options |
| |
| # ** Server Options |
| set -s escape-time 0 # Allows for faster key repetition |
| |
| # ** Session Options |
| # Set the default shell to /bin/sh. If the default is tcsh, doing a split-window takes a long |
| # time as my tcsh init is loaded first (which takes really long). |
| set -g default-shell /bin/sh |
| # If I am doing a new-window or split-window without a specified command, start the tcsh |
| # shell by default. |
| set -g default-command tcsh |
| set -g history-limit 100000 |
| set -g display-time 1000 # Duration of tmux display messages in milliseconds |
| |
| # ** Window Options |
| # When a smaller terminal connects to a tmux client, it shrinks to fit it. The |
| # clients attached with bigger displays see this constrained view. |
| # aggressive-resize makes it such that the window is only resized if the smaller |
| # client is actively looking at it. |
| setw -g aggressive-resize on |
| setw -g mode-keys emacs # Use emacs keybindings in copy mode |
| setw -g status-keys emacs |
| |
| # * Notes |
| |
| # |-------------------+------------| |
| # | tmux command | short form | |
| # |-------------------+------------| |
| # | set-option | set | |
| # | set-window-option | setw | |
| # | bind-key | bind | |
| # | unbind-key | unbind | |
| # | display-message | display | |
| # | run-shell | run | |
| # | if-shell | if | |
| # |-------------------+------------| |
| |
| # Colo'u'r table |
| # http://guns.github.io/xterm-color-table.vim/images/xterm-color-table.png |
| |
| # CHARACTER PAIR REPLACED WITH |
| # #(command) First line of command’s output |
| # #[attributes] Colour or attribute change |
| # #H Hostname of local host |
| # #I Current window index |
| # #P Current pane index |
| # #S Session name |
| # #T Current window title |
| # #W Current window name |
| # ## A literal ‘#’ |
| |
| # Variables used in time format |
| # Source: http://docs.splunk.com/Documentation/Splunk/5.0.2/SearchReference/Commontimeformatvariables |
| # %y = year in numbers (2-digit) |
| # %Y = year in numbers (4-digit) |
| # %m = month in number (eg: 12) |
| # %B = full month name (eg: December)sho |
| # %b = short month name (eg: Dec) |
| # %d = day in numbers, with leading zeros (eg: 08) |
| # %e = day in numbers, no leading zeros (eg: 8) |
| # %A = full weekday name (eg: Sunday) |
| # %a = short weekday name (eg: Sun) |
| # %H = hours in 24-clock, with leading zeros |
| # %k = hours in 24-clock, no leading zeros |
| # %l = hours in 12-clock, with leading zeros |
| # %p = am/pm |
| # %T = time in 24-hour notation (%H:%M:%S) |
| |
| # PREFIX ? : list-keys, display key bindings |
| |
| # In command-prompt: show-options -g shows the global options |
| # In command-prompt: show-window-options -g shows the global windows options |
| |
| # How do I know which tmux version I am running? |
| # tmux -V |
| |
| # How to set bindings that don't need the prefix? |
| # bind -n .. or |
| # bind -T root .. |
| |
| # Changelog: https://github.com/tmux/tmux/blob/master/CHANGES |
| |
| # style colors: default, black, red, green, yellow, blue, magenta, cyan, white, |
| # colour0-colour255, hexadecimal RGB string '#ffffff' |
| # Use $SCRIPTS/bash/256-colors.sh to figure out the color number you want |
| # style attributes: none, bold/bright, dim, underscore, blink, reverse, hidden, |
| # or italics |
| |
| # https://www.reddit.com/r/tmux/comments/3paqoi/tmux_21_has_been_released/cw552qd |
| |
| # tmux buffers |
| # PREFIX # : List all paste buffers |
| # PREFIX - : Delete the most recently copied buffer of text |
| # PREFIX = : Choose which buffer to paste interactively from a list |
| # PREFIX ] : Paste the most recently copied buffer of text |
| |
| # How to start a temporary tmux server in addition to an existing running one? |
| # > tmux -L temp |
| |
| # In a shell environment in a terminal in tmux, the env var $TMUX will be |
| # defined to something like "/tmp/tmux-23273/default,31101,0". Outside tmux, |
| # $TMUX will be undefined. |
| |
| # Notation to address a specific pane |
| # SESSION_NAME:WINDOW_INDEX.PANE_NUMBER (Example: foo:2.1 i.e. Pane 1 in Window 2 of Session foo) |
| |
| # To print a message containing tmux variable values to stdout use '-p' option in display-message |
| # tmux display-message -p '#{session_name}:#{window_name}.#{pane_index}', or |
| # tmux display -p '#{session_name}:#{window_name}.#{pane_index}' |