• tmux入门


    按键

    man tmux和C+b?两个操作可以获得一切。

    C-b ? 显示快捷键帮助
    C-b C-o 调换窗口位置,类似与vim 里的C-w
    C-b 空格键 采用下一个内置布局
    C-b ! 把当前窗口变为新窗口
    C-b “ 横向分隔窗口
    C-b % 纵向分隔窗口
    C-b q 显示分隔窗口的编号
    C-b o 跳到下一个分隔窗口
    C-b 上下键 上一个及下一个分隔窗口
    C-b C-方向键 调整分隔窗口大小
    C-b c 创建新窗口
    C-b 0~9 选择几号窗口
    C-b c 创建新窗口
    C-b n 选择下一个窗口
    C-b l 切换到最后使用的窗口
    C-b p 选择前一个窗口
    C-b w 以菜单方式显示及选择窗口
    C-b t 显示时钟
    C-b ; 切换到最后一个使用的面板
    C-b x 关闭面板
    C-b & 关闭窗口
    C-b s 以菜单方式显示和选择会话
    C-b d 退出tumx,并保存当前会话,这时,tmux仍在后台运行,可以通过tmux attach进入 到指定的会话
    

    命令行

    会话

    C-b s 以菜单的方式查看并选择会话
    C-b :new-session 新建一个会话
    C-b d 退出并保存会话
    终端运行 tmux attach 返回会话

    命名会话

    tmux new -s session
    tmux new -s session -d #在后台建立会话
    tmux ls #列出会话
    tmux attach -t session #进入某个会话

    tmux配置

    tmux默认配置在~/.tmux.conf文件中。

    快捷键

    Ctrl+b进入快捷键模式。

    #设置前缀为Ctrl + a
    set -g prefix C-a
    

    C-a表示Ctrl+a,默认是Ctrl+b。

    #解除Ctrl+b 与前缀的对应关系
    unbind C-b
    

    配置完以后,重启tmux起效,或者先按C+b,然后输入:,进入命令行模式, 在命令行模式下输入:

    source-file ~/.tmux.conf
    

    通过快捷键绑定tmux命令。

    #将r 设置为加载配置文件,并显示"reloaded!"信息
    bind r source-file ~/.tmux.conf ; display "Reloaded!"
    

    自定义切换窗格快捷键

    #up
    bind-key k select-pane -U
    #down
    bind-key j select-pane -D
    #left
    bind-key h select-pane -L
    #right
    bind-key l select-pane -R
    

    复制模式copy-mode

    • 前缀 [ 进入复制模式
    • 按 space 开始复制,移动光标选择复制区域
    • 按 Enter 复制并退出copy-mode。
    • 将光标移动到指定位置,按 PREIFX ] 粘贴
    • 如果把tmux比作vim的话,那么我们大部分时间都是处于编辑模式,我们复制的时候可不可以像 vim一样移动呢?只需要在配置文件(~/.tmux.conf)中加入如下行即可。
    #copy-mode 将快捷键设置为vi 模式
    setw -g mode-keys vi
    

    极简版配置

    set -g mouse on
    set-window-option -g mode-keys vi
    set-window-option -g utf8 on
    set-window-option -g automatic-rename off
    set-option -g allow-rename off
    

    对于高版本的tmux,set -g mouse on会提示命令过于模糊,因为高版本tmux鼠标设置被拆分为鼠标调整大小、鼠标选择窗格、鼠标选择窗口等选项。

    setw -g mouse-resize-pane on
    setw -g mouse-select-pane on
    setw -g mouse-select-window on
    setw -g mode-mouse on
    

    窗口重命名是一个非常有用的功能set-window-option -g automatic-rename offset-option -g allow-rename off,默认情况下tmux会自动更改窗口的名字,这两个命令就可以禁用掉自动更改。

    一份很全的配置

    #-- base settings --#
    set -g default-terminal "screen-256color"
    set -g display-time 3000
    set -g escape-time 0
    set -g history-limit 65535
    set -g base-index 1
    set -g pane-base-index 1
    
    #-- bindkeys --#
    # prefix key (Ctrl+a)
    set -g prefix ^a
    unbind ^b
    bind a send-prefix
    
    # split window
    unbind '"'
    # vertical split (prefix -)
    bind - splitw -v
    unbind %
    bind | splitw -h # horizontal split (prefix |)
    
    # select pane
    bind k selectp -U # above (prefix k)
    bind j selectp -D # below (prefix j)
    bind h selectp -L # left (prefix h)
    bind l selectp -R # right (prefix l)
    
    # resize pane
    bind -r ^k resizep -U 10 # upward (prefix Ctrl+k)
    bind -r ^j resizep -D 10 # downward (prefix Ctrl+j)
    bind -r ^h resizep -L 10 # to the left (prefix Ctrl+h)
    bind -r ^l resizep -R 10 # to the right (prefix Ctrl+l)
    
    # swap pane
    # swap with the previous pane (prefix Ctrl+u)
    bind ^u swapp -U
    # swap with the next pane (prefix Ctrl+d)
    bind ^d swapp -D
    
    # misc
    # select the last pane (prefix e)
    bind e lastp
    # select the last window (prefix Ctrl+e)
    bind ^e last
    # kill pane (prefix q)
    bind q killp
    # kill window (prefix Ctrl+q)
    bind ^q killw
    
    # copy mode
    # enter copy mode (prefix Escape)
    bind Escape copy-mode
    # paste buffer (prefix Ctrl+p)
    bind ^p pasteb
    # select (v)
    bind -t vi-copy v begin-selection
    # copy (y)
    bind -t vi-copy y copy-selection
    
    # zoom pane <-> window
    #http://tmux.svn.sourceforge.net/viewvc/tmux/trunk/examples/tmux-zoom.sh
    bind ^z run "tmux-zoom"
    
    # app
    # htop (prefix !)
    bind ! splitw htop
    # man (prefix m)
    bind m command-prompt "splitw 'exec man %%'"
    # perl func (prefix @)
    bind @ command-prompt "splitw 'exec perldoc -t -f %%'"
    # perl var (prefix *)
    bind * command-prompt "splitw 'exec perldoc -t -v %%'"
    # perl doc (prefix %)
    bind % command-prompt "splitw 'exec perldoc -t %%'"
    # ruby doc (prefix /)
    bind / command-prompt "splitw 'exec ri %%'"
    
    # reload config (prefix r)
    bind r source ~/.tmux.conf ; display "Configuration reloaded!"
    
    #-- statusbar --#
    set -g status-utf8 on
    set -g status-interval 1
    set -g status-keys vi
    
    setw -g mode-keys vi
    setw -g automatic-rename off
    
    #-- colorscheme --#
    #https://github.com/daethorian/conf-tmux/blob/master/colors/zenburn.conf
    
    # modes
    setw -g clock-mode-colour colour223
    setw -g mode-attr bold
    setw -g mode-fg colour223
    setw -g mode-bg colour235
    
    # panes
    set -g pane-border-bg colour234
    set -g pane-border-fg colour234
    set -g pane-active-border-bg colour232
    set -g pane-active-border-fg colour232
    
    # statusbar
    set -g status-justify centre
    set -g status-bg colour235
    set -g status-fg colour248
    set -g status-attr dim
    #[default]» #[fg=colour187]#S #[default]• #[fg=colour187]w#I.p#P#[default]"
    set -g status-left "
    set -g status-left-attr bright
    set -g status-left-length 20
    #[fg=colour174]#(/home/xiaodong/bin/uptime) #[default]• #[fg=colour174]#(cut -d ' ' -f 1-3 /proc/loadavg)"
    set -g status-right "
    set -g status-right-attr bright
    set -g status-right-length 80
    
    setw -g window-status-current-fg colour223
    setw -g window-status-current-bg colour237
    setw -g window-status-current-attr bold
    setw -g window-status-current-format "#I:#W#F"
    
    #setw -g window-status-alert-attr bold
    #setw -g window-status-alert-fg colour255
    #setw -g window-status-alert-bg colour160
    
    # messages
    set -g message-attr bold
    set -g message-fg colour223
    set -g message-bg colour235
    

    参考资料

    http://mingxinglai.com/cn/2012/09/tmux/

  • 相关阅读:
    入门命令13-字符串查找增强:findstr
    NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.
    docker: "build" requires 1 argument. See 'docker build --help'.
    Mac 下 docker安装
    eclipse导入maven web 项目 但是不显示成web 项目
    @QueryParam和@PathParam比较
    JVM--详解类加载机制
    JVM--Class类文件结构
    mysql left join中where和on条件的区别
    JAVA线程锁---Synchronized
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/10463190.html
Copyright © 2020-2023  润新知