tmux使用

Posted on Posted in tmux
Tips: 本文创建于2015年11月18日,已超过 2 年,内容或图片可能已经失效!

logo.png

官网

想用tmux好久了,开始只是执行了tmux一个命令,然后 Ctrl+b d 不好使,因为使用screen都是类似这么按的,经验害死人呐。

有一点非常重要:并不是把前缀键和命令键一起按下,而是先同时按下 CTRL 键和 b 键,然后松开这两个键,然后再快速地按下要让 tmux 执行的命令键。

创建命名会话

tmux new-session -s basic  
#或简化  
tmux new -s basic  

分离会话

ctrl+b d  

列出现有的会话

tmux list-sessions  
tmux ls  

连接会话

#如果当前只有一个会话  
tmux attach  
#如果有多个  
tmux attach -t second_session  

杀死会话

tmux kill-session -t basic  

使用窗口

tmux new -s windows -n shell    #-n命名第一个窗口  
ctrl+b c    #创建另一个窗口  
ctrl+b ,    #给窗口命名  
ctrl+b n    #切换下一个窗口  
ctrl+b p    #切换上一个窗口  
ctrl+b f    #查找窗口  
ctrl+b w    #列出窗口列表  

使用面板

ctrl+b %    #从中间竖分一半  
ctrl+b "    #从中间横分一半  
ctrl+b o    #在面板中切换  
ctrl+b (上下左右)   #在面板中切换  

默认面板布局

  • even-horizontal 把所有面板均匀地水平排列,从左到右。
  • even-vertical 把所有面板均匀地垂直排列,从上到下。
  • main-horizontal 在顶部创建一个非常大的面板,其余面板变为小面板水平地放在底部。
  • main-vertical 在左侧创建一个非常大的面板,其余面板变为小面板垂直地放在右侧。
  • tiled 把所有面板大小均等地在屏幕上显示。

ctrl+b spancebar(空格)    #在面板布局中切换  

关闭面板

exit  
#或  
ctrl+b x    #带确认提示  

使用命令模式

ctrl+b :    #进入提示符输入  
new-window -n console  
new-window -n processes "top"  

tmux的配置文件

/etc/tmux.conf  
~/.tmux.conf  

下面一个配置文件示例

# 把前缀键从 C-b 更改为 C-a    
# -g全局配置    
set -g prefix C-a    
    
# 释放之前的 Ctrl-b 前缀快捷键    
unbind C-b    
    
# 设定前缀键和命令键之间的延时    
set -sg escape-time 1    
    
# 确保可以向其它程序发送 Ctrl-A    
bind C-a send-prefix    
    
# 把窗口的初始索引值从 0 改为 1    
set -g base-index 1    
    
# 把面板的初始索引值从 0 改为 1    
setw -g pane-base-index 1    
    
# 使用 Prefix r 重新加载配置文件    
bind r source-file ~/.tmux.conf \; display "Reloaded!"    
    
# 分割面板    
bind | split-window -h    
bind - split-window -v    
    
# 在面板之间移动    
bind h select-pane -L    
bind j select-pane -D    
bind k select-pane -U    
bind l select-pane -R    
    
# 快速选择面板    
bind -r C-h select-window -t :-    
bind -r C-l select-window -t :+    
    
# 调整面板大小(注意大小写)    
bind -r H resize-pane -L 5    
bind -r J resize-pane -D 5    
bind -r K resize-pane -U 5    
bind -r L resize-pane -R 5    
    
# 鼠标支持 - 如果你想使用的话把 off 改为 on    
setw -g mode-mouse off    
set -g mouse-select-pane off    
set -g mouse-resize-pane off    
set -g mouse-select-window off    
    
# 设置默认的终端模式为 256 色模式    
set -g default-terminal "screen-256color"    
    
# 开启活动通知    
setw -g monitor-activity on    
set -g visual-activity on    
    
# 设置状态栏的颜色    
set -g status-fg white    
set -g status-bg black    
    
# 设置窗口列表的颜色    
setw -g window-status-fg cyan    
setw -g window-status-bg default    
setw -g window-status-attr dim    
    
# 设置活动窗口的颜色    
setw -g window-status-current-fg white    
setw -g window-status-current-bg red    
setw -g window-status-current-attr bright    

    
# 设置面板和活动面板的颜色    
set -g pane-border-fg green    
set -g pane-border-bg black    
set -g pane-active-border-fg white    
set -g pane-active-border-bg yellow    
    
# 设置命令行或消息的颜色    
set -g message-fg white    
set -g message-bg black    
set -g message-attr bright    
    
# 设置状态栏左侧的内容和颜色    
set -g status-left-length 40    
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"    
set -g status-utf8 on    
    
# 设置状态栏右侧的内容和颜色    
# 15% | 28 Nov 18:15    
set -g status-right "#(~/battery Discharging) | #[fg=cyan]%d %b %R"    
    
# 每 60 秒更新一次状态栏    
set -g status-interval 60    
    
# 设置窗口列表居中显示    
set -g status-justify centre  
    
# 开启 vi 按键    
setw -g mode-keys vi    
    
# 在相同目录下使用 tmux-panes 脚本开启面板    
unbind v    
unbind n    
bind v send-keys " ~/tmux-panes -h" C-m    
bind n send-keys " ~/tmux-panes -v" C-m    
    
# 临时最大化面板或恢复面板大小    
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    
    
# 把日志输出到指定文件    
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"    

下面一个登陆即显示tmux的示例,写到.zshrc里

tmux_init()  
{  
    tmux new-session -s liuhonghe -n lhh -d  
    tmux split-window -h   
    tmux split-window -v  
    tmux -2 attach-session -d  
}  
if which tmux 2>&1 >/dev/null; then  
    test -z "$TMUX" && (tmux attach -t liuhonghe || tmux_init)  
fi  

增加一个

cmd=$(which tmux)      # tmux path  
session=$(hostname -s) # session name  
  
if [ -z $cmd ]; then  
echo "You need to install tmux."  
exit 1  
fi  
  
$cmd has -t $session 2> /dev/null  
  
if [ $? != 0 ]; then  
        $cmd new -d -n lhh -s $session  
        $cmd split-window -h  
        $cmd selectp -L  
        $cmd split-window -v  
        $cmd selectp -R  
        $cmd resize-pane -L 35  
        $cmd selectp -t 1  
        $cmd send-keys "htop" C-m  
        $cmd selectp -t 2  
        $cmd neww -n zsh -t $session "zsh"  
        $cmd selectw -t $session:0  
fi  
test -z $TMUX 2> /dev/null  
if [ $? -eq 0 ];then  
        $cmd att -t $session  
fi  

推荐一个学tmux的网站

» 转载请注明来源:若我若鱼 » tmux使用

Leave a Reply

Your email address will not be published. Required fields are marked *

18 − fourteen =