tmux 是一款終端複用命令行工具,一般用於 Terminal 的窗口管理.能夠在終端軟件重啓後經過命令行恢復上次的 session.shell
macOS 上使用 Homebrew 安裝便可:vim
brew install tmux
在 shell 主進程下運行如下命令能夠操做 tmux 會話:session
tmux new -s foo # 新建名稱爲 foo 的會話 tmux ls # 列出全部 tmux 會話 tmux a # 恢復至上一次的會話 tmux a -t foo # 恢復名稱爲 foo 的會話,會話默認名稱爲數字 tmux kill-session -t foo # 刪除名稱爲 foo 的會話 tmux kill-server # 刪除全部的會話
通常狀況下 tmux 中全部的快捷鍵都須要和前綴快捷鍵 ⌃b 來組合使用.less
在 tmux 會話中,使用前綴快捷鍵 ⌃b 配合如下快捷鍵可操做會話:工具
在中.tmux.conf 配置文件增長如下內容:佈局
set -g mode-mouse on
spa
set -g mouse-select-pane on
pwa
set-option -g allow-rename off
命令行
set-window-option -g mode-keys vi
rest
配置文件修改完成後,能夠 tmux kill-server 重啓全部 tmux 進程,或者在 tmux 會話中使用 ⌃b : 進入控制檯模式,輸入 source-file ~/.tmux.conf 命令從新加載配置。
方法 1:使用 ⌃b z 進入窗格全屏模式,鼠標選擇文本的同時按住 option 鍵 ⌥,而後使用 ⌘c 進行復制;
方法 2 配置文件增長如下配置後,ESC進入複製模式 v 選擇文本 y 複製文本.
bind Escape copy-mode # 綁定esc鍵爲進入複製模式 bind -T copy-mode-vi v send-keys -X begin-selection # 綁定v鍵爲開始選擇文本 bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel # 綁定y鍵爲複製選中文本
# 修改 ctrl+b 前綴爲 ctrl+a set -g prefix C-a unbind C-b bind C-a send-prefix # set-option -g prefix2 ` # 綁定重載 settings 的熱鍵 bind r source-file ~/.tmux.conf \; display-message "Config reloaded.." # 設置爲vi編輯模式 setw -g mode-keys vi # 設置爲vi編輯模式 bind Escape copy-mode # 綁定esc鍵爲進入複製模式 bind -T copy-mode-vi v send-keys -X begin-selection # 綁定v鍵爲開始選擇文本 bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel # 綁定y鍵爲複製選中文本 set-option -g default-command 'exec reattach-to-user-namespace -l zsh' bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'reattach-to-user-namespace pbcopy' # bind-key -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe-and-cancel "pbcopy" # bind-key C-c run-shell 'tmux save-buffer - | reattach-to-user-namespace pbcopy' # bind-key C-v run-shell 'reattach-to-user-namespace pbpaste | tmux load-buffer - \; paste-buffer -d' # 設置window的起始下標爲1 set -g base-index 1 # 設置pane的起始下標爲1 set -g pane-base-index 1 #-- base --# set -g default-terminal "screen-256color" set -g display-time 3000 set -g history-limit 65535 # 鼠標支持 set-option -g mouse on # 關閉默認窗口標題 set -g set-titles off #-- bindkeys --# unbind '"' bind - splitw -v -c '#{pane_current_path}' unbind % bind | splitw -h -c '#{pane_current_path}' bind c new-window -c "#{pane_current_path}" # 定義上下左右鍵爲hjkl鍵 bind -r k select-pane -U bind -r j select-pane -D bind -r h select-pane -L bind -r l select-pane -R # 定義面板邊緣調整的^k ^j ^h ^l快捷鍵 bind -r ^k resizep -U 1 # upward (prefix Ctrl+k) bind -r ^j resizep -D 1 # downward (prefix Ctrl+j) bind -r ^h resizep -L 1 # to the left (prefix Ctrl+h) bind -r ^l resizep -R 1 # to the right (prefix Ctrl+l) # 定義交換面板的鍵 # bind ^u swap-pane -U # bind ^d swap-pane -D # bind e lastp # bind ^e last # bind q killp #bind '~' splitw htop #bind ! splitw ncmpcpp # bind m command-prompt "splitw 'exec man %%'" # bind @ command-prompt "splitw 'exec perldoc -t -f %%'" # bind * command-prompt "splitw 'exec perldoc -t -v %%'" # bind % command-prompt "splitw 'exec perldoc -t %%'" # bind / command-prompt "splitw 'exec ri -T %% | less'" # 輸出日誌到桌面 # bind P pipe-pane -o "cat >>~/Desktop/#W.log" \; display "Toggled logging to ~/Desktop/#W.log" #-- statusbar --# set -g status-right-attr bright set -g status-bg black set -g status-fg yellow # 設置狀態欄高亮 setw -g window-status-current-attr bright # 設置狀態欄紅底白字 setw -g window-status-current-bg red setw -g window-status-current-fg white # 設置狀態欄列表左對齊 set -g status-justify left # 非當前window有內容更新時在狀態欄通知 setw -g monitor-activity on set -g status-interval 1 #set -g visual-activity on setw -g automatic-rename off setw -g allow-rename off # 最大化(默認爲z,增長模擬的b指令) # unbind b # bind b run ". ~/.tmux/zoom" # set -g status-keys vi # plugin-manager set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-sensible' # plugins set -g @plugin 'tmux-plugins/tmux-resurrect' set -g @plugin 'tmux-plugins/tmux-continuum' # load-plugins-without-manager #run-shell ~/.tmux/tmux-resurrect/resurrect.tmux #run-shell ~/.tmux/tmux-continuum/continuum.tmux # plugins-settings set -g @resurrect-strategy-vim 'session' # for vim set -g @resurrect-strategy-nvim 'session' # for neovim set -g @continuum-save-interval '180' # '0' set -g @continuum-restore 'on' set -g @continuum-boot-options 'fullscreen' set -g status-right 'Continuum status: #{continuum_status}' set -wg window-status-format " #I:#W " setw -g window-status-current-format " #I:#W " set -wg window-status-separator "" set -g message-style "bg=#202529, fg=#91A8BA" set -g @resurrect-capture-pane-contents 'on' # 恢復面板內容 run '~/.tmux/plugins/tpm/tpm'