Created
December 1, 2020 05:21
-
-
Save venkywonka/b8cfa85a9f046f5018b59afbbe5ca594 to your computer and use it in GitHub Desktop.
Revisions
-
venkywonka created this gist
Dec 1, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,225 @@ # Changes to this file aren't read by tmux automatically, # compleletely close the tmux sesssion and reopen it or # ~PREFIX :~ to open command mode and type "source-file ~/.tmux.conf" or # "tsr" in terminal which is an alias in ~/.fishrc or use binding `M-f r` to make it work # # from FAQ file in tmux source code: # to see the default session options by starting a new tmux server with no configuration file: # $ tmux -Lfoo -f/dev/null start\; show -g # Or the default window options: # $ tmux -Lfoo -f/dev/null start\; show -gw # setting default shell set-option -g default-shell "/bin/bash" # solve the arrows mess when using vim in tmux # set -g default-terminal "xterm-256color" set -s default-terminal "screen-256color" # set -s terminal-overrides "*256col*:colors=256,xterm*:XT,xterm-termite:Tc" # setw -g xterm-keys on # use mouse to scroll the output page instead of the command history set -g terminal-overrides 'xterm*:smcup@:rmcup@' # fix the konsole/yakuake bug github#933 set -as terminal-overrides ',*:indn@' # set the prefix from C-b to M-f set -g prefix M-f # reload the file using Prefix-r bind r source-file ~/.tmux.conf \; display "~/.tmux.conf reloaded!" # switch pane, default is with -r (repeated without prefix) bind Up select-pane -U bind k select-pane -U bind Down select-pane -D bind j select-pane -D bind Left select-pane -L bind h select-pane -L bind Right select-pane -R bind l select-pane -R bind = select-layout -E bind + select-layout tiled # choose the right pane using prefix-M-Num bind 1 select-pane -t 1 bind 2 select-pane -t 2 bind 3 select-pane -t 3 bind 4 select-pane -t 4 bind 5 select-pane -t 5 bind 6 select-pane -t 6 # choose the right window using prefix-M-Num # The default is prefix+Num bind M-1 select-window -t :=1 bind M-2 select-window -t :=2 bind M-3 select-window -t :=3 bind M-4 select-window -t :=4 bind M-5 select-window -t :=5 bind M-6 select-window -t :=6 bind M-7 select-window -t :=7 bind M-8 select-window -t :=8 bind M-9 select-window -t :=9 # use M-f M-f to switch to last window bind M-f last-window # M-f t to kill-pane bind -r t kill-pane \; set -u pane-active-border-style # kill all other panes but the current one bind T confirm-before "kill-pane -a" # kill current window #bind -r x kill-window # kill all the other windows but the current one bind X confirm-before "kill-window -a" # kill tmux server and clients and destory all sessions bind Q confirm-before "kill-server" # Start Window Numbering at 1 set -g base-index 1 setw -g pane-base-index 1 # Aggressive resize(don't know what this means) setw -g aggressive-resize on # prevoius/next-window bind -r M-x previous-window bind -r M-v next-window bind -r Tab next-window # bind -r C-Tab previous-window # or # bind -r M-x select-window -t :- # bind -r M-v select-window -t :+ # Vertial split-window from current dir bind -r v split-window -p 50 -h -c "#{pane_current_path}" \; set -u pane-active-border-style bind -r '\' split-window -p 50 -h -c "#{pane_current_path}" \; set -u pane-active-border-style # Horizontal split-window from current dir bind -r h split-window -p 50 -c "#{pane_current_path}" \; set -u pane-active-border-style bind -r - split-window -p 50 -c "#{pane_current_path}" \; set -u pane-active-border-style # create new window #from the current dir bind c new-window # -c "#{pane_current_path}" # copy the text in terminal using the following method:(not need to go into the copy mode first) # hold Shift and using touchpad/mouse tmux kill-pane -aselect the text you want # press C-S-c at the same time to copy, the text will be filled into the X clipboard # C-S-v to paste # copy/paste between system clipboard and tmux # When in mouse mode, Shift-mouse to copy on select set -g mouse on # toggle mouse on/off bind m set -g mouse # prefix+[ first, select the content with mouse(hold) and then copy using M-w, # paste using C-y, using prefix+[ will also solve the problem that # selecting multiple lines with mouse selects contents cross panes. # To copy: #bind-key -n -t emacs-copy M-w copy-pipe "xclip -i -sel p -f | xclip -i -sel c " bind-key -n -Tcopy-mode M-w send -X copy-pipe "xclip -i -sel p -f | xclip -i -sel c "\; display-message "Copied" # To paste: bind-key -n C-y run "xclip -o | tmux load-buffer - ; tmux paste-buffer" set-window-option -g mode-keys vi bind M-s copy-mode bind-key -T copy-mode M-a send-keys -X page-up bind-key -T copy-mode M-z send-keys -X page-down # scrollback limit #set-option -g history-limit 30000 set -g history-limit 30000 # Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access. set -s escape-time 50 # Reduce the command delay time to something a bit shorter #set -sg escape-time 1 # Extend the repeat interval for repeatable commands (e.g., resize-pane) #set -sg repeat-time 500 # how long to show pane numbers when pressing M-f q set -g display-panes-time 2000 # (which is 2sec) # Automatically set window title to reflect the current program setw -g automatic-rename on # setw -g automatic-rename-format '{#T}' # renumber the windows if any of them is closed #set -g renumber-windows on # disable M-f C-z to suspend tmux unbind-key C-z # disable C-d to exit shell, this C-d happens when being first input to prompt unbind-key C-d # clear screen #bind -n C-l send-keys 'C-l' #unbind-key C-l #bind -n C-l send-keys 'C-l' # network speed in status line, ~/.local/bin/net-speed.sh # set update frequencey (default 15 seconds) set -g status-interval 1 #set -g status-left '#(net-speed.sh wlp5s0)#[default]' # Set status bar set -g status-bg green # default->transparent set -g status-fg black # green set -g status-left "[#S#I#P:#{pane_height}x#{pane_width}] " set -g status-right-length 200 set -g status-left-length 100 set -g pane-border-status top set -g pane-border-format "#[reverse,bold]#(echo '#')#{pane_index}: #{s|$HOME|~|:pane_current_path}#[default] #(~/.local/bin/gitmux -timeout 2s #{pane_current_path})#[default]" # use prefix+z to max/restore the current pane # prefix+M-z to max the other one, unzoomed the window if it is already zoomed # hit again or prefix-left/right/down/up to unzoom bind z if-shell "[[ #{window_panes} -eq 1 || #{window_zoomed_flag} -eq 1 ]]" "resize-pane -Z ; set-option pane-active-border-style fg=green,bold" "resize-pane -Z ; set-option pane-active-border-style fg=green,bold,italics" bind M-z if-shell "[[ #{window_panes} -eq 1 || #{window_zoomed_flag} -eq 1 ]" "resize-pane -Z; set-option pane-active-border-style fg=green,bold" "last-pane ; resize-pane -Z; set-option pane-active-border-style fg=green,bold,italics" # set -g pane-active-border-style '#{?window_zoomed_flag,#[fg=green,bold,italics],#[fg=red,bold]}' if-shell "[[ #{window_zoomed_flag} -eq 1 ]]" "set -g pane-active-border-style fg=green,bold,italics" "set -g pane-active-border-style fg=black,bg=yellow" # Highlight active window setw -g window-status-current-style fg=green,bg=black # indentify activity in other windows setw -g monitor-activity off set -g visual-activity off #setw -g window-status-activity-style bold,reverse,underscore #setw -g window-status-format "[#I#([ #{window_panes} -gt 1 ] && echo :#{window_panes})]:#{pane_current_command}#F" set -g window-status-format '#[fg=black]#I' set -g window-status-current-format '#[bg=black]#I:#[bg=default]#[fg=green][#W]#[fg=yellow]#(pwd="#{pane_current_path}"; echo ${pwd####*/})#F' # bind s list-panes -a -F '#S:#I:#P-#{pane_height}x#{pane_width} "#{pane_title}" #{history_size}' # hiden and restore a pane # https://unix.stackexchange.com/a/506103/130234 bind Z break-pane -d -n _hidden_pane bind ! join-pane -s $.1 #bind w choose-tree -u #bind w choose-tree -u -W '#{window_index}(#{window_panes}): #{window_name} #{session_attached,yes,} #{pane_current_path} #F' #bind w choose-tree '#{window_index}(#{window_panes}): #{window_name} #{session_attached,yes,} #{pane_current_path} #F' # bind w choose-tree # default format of choose-tree # bind w choose-tree -F '#{?pane_format, #{pane_current_command} "#{pane_title}",#{?window_format,#{window_name}#{window_flags} (#{window_panes} panes)#{?#{==:#{window_panes},1}, "#{pane_title}",},#{session_windows} windows#{?session_grouped, (group ,}#{session_group}#{?session_grouped,),}#{?session_attached, (attached),}}}' bind w choose-tree -F '#{?pane_format, <#[fg=green]#{pane_tty}>#[default] #[fg=red]#{pane_current_command}#[default] "#{pane_title}",#{?window_format,#{window_name}#{window_flags} (#{window_panes} panes)#{?#{==:#{window_panes},1}, #[fg=black]"<#{pane_tty}>#[default] #{pane_title}",},#{session_windows} windows#{?session_grouped, (group ,}#{session_group}#{?session_grouped,),}#{?session_attached, (attached),}}}' set -g message-style fg=red,bg=default,bright #set -g display-time 3000 # scroll the screen of the other pane from the current pane bind -r M-PageDown last-pane \; send-keys "PageDown" \; last-pane bind -r M-PageUp last-pane \; send-keys "PageUp" \; last-pane bind -r M-Home last-pane \; send-keys "Up" \; last-pane bind -r M-End last-pane \; send-keys "Down" \; last-pane # default is 5 at the end, set them to C-Up/Down/Left/Right since prefix is M-f bind -r M-Up resize-pane -U 2 bind -r M-Down resize-pane -D 2 bind -r M-Left resize-pane -L 2 bind -r M-Right resize-pane -R 2 # IC/DC = Insert/Delete bind-key -r IC resize-pane -U 5 bind-key -r DC resize-pane -D 5 bind-key -r Home resize-pane -L 5 bind-key -r End resize-pane -R