天天看点

bash配置tmux来显示tmux ssh的状态

需求: 在tmux里面链接ssh的时候, 如果存在多个ssh主机, 想要显示对应的主机ip以示甄别

实现效果

bash配置tmux来显示tmux ssh的状态

编辑你的bashrc, 因为我习惯在root下操作, 所以/root/.bashrc, 你如果习惯用user, 那就编辑/home/你的用户名/.bashrc

增加

ssh() {

    if [ "$(ps -p $(ps -p $$ -o ppid=) -o comm=)" = "tmux" ]; then

            tmux rename-window "$*"

            command ssh "[email protected]"

            tmux set-window-option automatic-rename "on" 1>/dev/null

    else

            command ssh "[email protected]"

    fi

}

到你的bashrc

保存后即可。唯一需要注意的是,因为我习惯ssh -参数 参数值 [email protected] 这样来访问, 因为修改了ssh的这个,导致参数值会无法正常识别。这里把参数参数值放到后面即可。

附tmux.conf配置

#bind r source-file ~/.tmux.conf \;display "Reloaded!"

# #      重置预设置

set -g prefix C-a               #设置命令为ctrl-a触发prefix

unbind C-b                      #解绑ctrl-b

bind C-a send-prefix            #设置预命令为prefix

# #      面板分割

unbind '"'

bind | split-window -h          #左右分割

unbind %

bind - split-window -v          #上下分割

bind k select-pane -U           #选择上窗口 shift+k

bind j select-pane -D           #选择下窗口

bind h select-pane -L           #选择左窗口

bind l select-pane -R           #选择右窗口

bind K resize-pane -U 5         #窗格上移5  (Ctrl-k一起按)

bind J resize-pane -D 5         #窗格下移5

bind H resize-pane -L 5         #窗口左移5

bind L resize-pane -R 5         #窗口右移5

bind -r K resize-pane -U 5      #窗口重复操作

bind -r J resize-pane -D 5      #窗口重复操作

bind -r H resize-pane -L 5      #窗口重复操作

bind -r L resize-pane -R 5      #窗口重复操作

bind ^u swapp -U                #与上窗格交换   (Ctrl-u)

bind ^d swapp -D                #与下窗格交换   (Ctrl-u)

# # enable vi keys.

setw -g mode-keys vi            #兼容vi按键

# #      像vi一样复制    所有复制都会被记录在缓冲区,输入#或tmux list-buffers查看,=也可以选择粘贴缓冲区

unbind [

bind Escape copy-mode           #绑定Esc进入复制模式

#unbind p                        #解绑p

bind P paste-buffer             #绑定p为粘贴

bind -t vi-copy 'v' begin-selection #绑定v为选择

bind -t vi-copy 'y' copy-selection  #绑定y为复制

#setting the delay between PREFIX and command

set -sg escape-time 1

# # Set the base index for windows to 1 instead of 0

set -g base-index 1

# # Set the base index for panes to 1 instead of 0

setw -g pane-base-index 1

# #      重新加载配置文件

bind r source-file /etc/tmux.conf \; display "Reloaded!"

# # Quick pane selection        #Prefix+Ctrl+h/l循环windows

bind -r C-h select-window -t :-

bind -r C-l select-window -t :+

# # mouse support - set to on if you want to use the mouse

setw -g mode-mouse off

set -g mouse-select-pane off

set -g mouse-resize-pane off

set -g mouse-select-window off

# # Set the default terminal mode to 256color mode

set -g default-terminal "screen-256color"

set -g display-time 2000

set -g history-limit 10000

# # enable activity alerts

setw -g monitor-activity on

set -g visual-activity on

# # set the status line's colors

set -g status-fg white

set -g status-bg black

# # set the color of the window list

setw -g window-status-fg cyan

setw -g window-status-bg default

setw -g window-status-attr dim

# # set colors for the active window

setw -g window-status-current-fg white

setw -g window-status-current-bg red

setw -g window-status-current-attr bright

# # pane colors

set -g pane-border-fg white

set -g pane-border-bg black

set -g pane-active-border-fg blue

#set -g pane-active-border-bg colour240

# # Command / message line

set -g message-fg white

set -g message-bg black

set -g message-attr bright

# # Status line left side

set -g status-left-length 20

set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"

set -g status-utf8 on

# # Status line right side

# # 15% | 28 Nov 18:15

set -g status-right "#[fg=cyan]%Y-%m-%d %H:%M:%S "

# # Update the status bar every sixty seconds

set -g status-interval 60

# # Center the window list

set -g status-justify centre

# # Maximize and restore a pane

unbind Up

bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp

unbind Down

bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp

# # Working with the Clipboard on Linux

bind C-c run "tmux save-buffer - | xclip -i -sel clipboard"

bind C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"

继续阅读