zoukankan      html  css  js  c++  java
  • linux下的终端利器 tmux 安装以及使用


    ref :https://www.jianshu.com/p/fd3bbdba9dc9


    Introduction

    为什么使用tmux?
    因为如果我们用terminal连接remote server。发生一些不可抗力,terminal关了的话,your work is GONE!

    但是tmux不一样,即使你关闭了tmux。下次重新attch的时候,你会发现之前的东西都还在。这是因为即使你关闭了tmux,它也还在服务器的后台运行。

    • prefix默认指的是ctrl键位和b键位,两个一起press,然后再按其他键位来实现不同的命令。在第4部分,我们会更改这个默认设置为ctrl+a,方便输入。在此之前默认都是ctrl+b

    举个栗子:
    prefix + % :水平分割pane
    上面这句话里的+号和:号可以无视。:号之后的内容是我写的注释。
    prefix是按下ctrl和b, 然后再按%键,这个%键就是shift+5。

    2 Panes

    分割pane

    • prefix + % :水平分割pane
    • prefix + " : 竖直分割pane

    退出

    • exit : 退出一个pane,直接在shell里输入即可,这个比快捷键方便

    放大一个pane

    • prefix + z : 把当前一个pane放大(zoom in)。比如在用ls查看output的时候,因为一个pane可能空间太小,所以把这个pane放大,你可以把注意力全放在这个pane里。回到之前的多pane状态的话只需要重复一遍命令即可(zoom out)

    在pane之间switch

    • prefix + 上下左右的箭头 :这个说实话还是不方便,之后会有设置的方法来用鼠标选择pane

    resize the pane

    • prefix + (ctrl)+上下左右箭头 : 与上面命令不同的是,ctrl + b按完之后,不要松开ctrl,一直按着,然后再按箭头来调整。不过因为在mac下ctrl+箭头是切换屏幕,所以还得在偏好设置->键盘->快捷键->Mission Control里把对应的快捷键取消掉。

    3 Windows

    创建window

    • prefix + c : 创建一个新的window。最下面会多出window的编号。有*号所在的window就是当前正在操作的window。

    在不同的window间移动

    • prefix + 数字1,2,3 : 因为能看到不同window的数字编号,所以直接输入想去的window的数字编号即可

    关闭window

    • prefix + & : 关闭当前window

    重命名window:因为创建新的window后,下面除了数字编号不同外window名称都是一样的。所以为了知道每一个window是什么,最好重命名一下。

    • prefix + , (逗号):更改window名称。但是这里遇到一个问题。更名后,我随便使用ls或cd命令后,window名称会随着目录的不同而变化。google后发现这个是zsh下oh-my-zsh的特性。于是打开~/.zshrc, 讲DISABLE_AUTO_TITLE="true"这一行反注释掉。source ~/.zshrc后,测试更改的名称,发现一切正常。

    4 Configuration

    如果没有配置文件的话先创建: touch ~/.tmux.conf
    视频中的文件配置

    # Send prefix
    set-option -g prefix C-a
    unbind-key C-a
    bind-key C-a send-prefix
    
    # Use Alt-arrow keys to switch panes
    bind -n M-Left select-pane -L
    bind -n M-Right select-pane -R
    bind -n M-Up select-pane -U
    bind -n M-Down select-pane -D
    
    # Shift arrow to switch windows
    bind -n S-Left previous-window
    bind -n S-Right next-window
    
    # Mouse mode
    set -g mode-mouse on
    set -g mouse-resize-pane on
    set -g mouse-select-pane on
    set -g mouse-select-window on
    
    # Set easier window split keys
    bind-key v split-window -h
    bind-key h split-window -v
    
    # Easy config reload
    bind-key r source-file ~/.tmux.conf ; display-message "tmux.conf reloaded"
    

    首先,在更改了.tmux.conf后,在tmux里的快捷键没有变化。查找后发现是tmux只有在新建session的时候,才会去找tmux.conf文件。所以说,我之前创建的那些session都没有参考tmux.conf. 所以我就用tmux lstmux kill-session -a只保留当前session。再删除当前session tmux kill-session -t py27。这下删除了所有创建好的session。

    然后再次用tmux new -s py27创建一个新的名为py27的session。有提示了,但是错误提示显示没有mode-mouse命令。google之发现在2.1之后的tmux版本里,已经废除了这个命令。想要开启mouse mode的话,只需要一个句命令即可set -g mouse on

    更新后如下

    # Send prefix
    set-option -g prefix C-a
    unbind-key C-a
    bind-key C-a send-prefix
    
    # Use Alt-arrow keys to switch panes
    bind -n M-Left select-pane -L
    bind -n M-Right select-pane -R
    bind -n M-Up select-pane -U
    bind -n M-Down select-pane -D
    
    # Shift arrow to switch windows
    bind -n S-Left previous-window
    bind -n S-Right next-window
    
    # Mouse mode
    set -g mouse on
    
    
    # Set easier window split keys
    bind-key v split-window -h
    bind-key h split-window -v
    
    # Easy config reload
    bind-key r source-file ~/.tmux.conf ; display-message "tmux.conf reloaded"
    

    Send prefix
    把prefix的ctrl+b变为了ctrl+a,因为这样按起来方便些。基本上用tmux的都改了这个。

    Use Alt-arrow keys to switch panes
    不用按prefix,直接用alt+箭头在pane之间switch。实际用过之后才发现真是太方便了!

    Shift arrow to switch windows
    不用按prefix,直接用shift+箭头在window之间switch。太方便了!

    Mouse mode
    开启鼠标模式。用鼠标就能切换window,pane,还能调整pane的大小,方便!

    Set easier window split keys
    这一部分是用来更方便切分pane的。prefix + v 代表竖着切,prefix + h 代表横着切。比起默认的切割方法不仅直观而且方便。

    Easy config reload
    下一次如果修改了.tmux.conf的设置的话,不用关掉tmux。直接用prefix+r,就能重新加载设置。

    5 Session

    查看所有的session(在terminal输入)

    • tmux ls : 这个命令是在terminal里输入的。当前正常运作中的tmux server会显示(attached)。没有的话就是已关闭,tmux server在后台运行。

    更名session(tmux状态下输入)

    • prefix + $ : 更名后好让自己知道每一个session是用来做什么的。通常一个session对应一个project

    创建session的时候直接命名(在terminal输入)

    • tmux new -s py35 : 新建一个名为py35的session

    断开一个session(detached) (tmux状态下输入)

    • prefix + d :退出session。在只有一个window的状态下,直接输入exit也能退出

    重新连接某一个session wich name(在terminal输入)

    • tmux a -t py35 : 重新连接py35 session。这里的a是attach的意思

    偷懒连接上一个session(在terminal输入)

    • tmux a : 如果只有一个session的话,这个是最快的连接方法

    删除session(在terminal输入)

    • tmux kill-session -a -t py35 : 删除除了py35以外的所有session


  • 相关阅读:
    POJ3320 Jessica's Reading Problem
    POJ3320 Jessica's Reading Problem
    CodeForces 813B The Golden Age
    CodeForces 813B The Golden Age
    An impassioned circulation of affection CodeForces
    An impassioned circulation of affection CodeForces
    Codeforces Round #444 (Div. 2) B. Cubes for Masha
    2013=7=21 进制转换
    2013=7=15
    2013=7=14
  • 原文地址:https://www.cnblogs.com/schips/p/10861441.html
Copyright © 2011-2022 走看看