TMUX 的两个问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tracyone
V2EX    tmux

TMUX 的两个问题

  •  
  •   tracyone 2015-12-09 23:12:33 +08:00 7749 次点击
    这是一个创建于 3594 天前的主题,其中的信息可能已经有所发展或是发生改变。

    session 的关闭

    请教各位,在使用 tmux 的过程如何比较方便的管理 session?比如说遇到这样的情况,我主动按 prefix+d 将当前的 session 放到服务器后台执行,或者突然断网,这样的情况下,就会产生多个 session ,此时按 prefix+s 会展现多个 session , session 的名字是用数字来命名的。

    此时我想关闭其中几个,而不退出当前的 session ,一种办法是进入命令提示的界面执行

    :kill-session $session_name 
    /div>

    但这样不方便,一来是 session 的名字是数字,我们不知道它是否是我们要杀的 session 。

    第二种方法是在 linux 和 mac osx 下用kill pid的方式,这种更加不方便,我们无法从 pid 得知对应的 session 。


    鼠标

    我在.tmux.conf使能了一些列的鼠标功能,但是有个问题是,当我不只是在纯命令行的情况下使用 tmux ,我往往需要用 GUI 自带的鼠标选择复制粘贴功能,就像 linux 下地 gnome-terminal 和 win 下地 xshell ,我希望我依旧可以用鼠标选择文本并右键复制粘贴,但是 tmux 却把这个功能给废,求指导

    第 1 条附言    2015-12-13 14:08:30 +08:00

    采用了 8 楼的映射快捷键取消鼠标和使能鼠标

    bind m setw -g mode-mouse off \; set -g mouse-select-pane off \; set -g mouse-resize-pane off \; set -g mouse-select-window off \; display "Mouse OFF!"
    bind M setw -g mode-mouse on \; set -g mouse-select-pane on \; set -g mouse-resize-pane on \; set -g mouse-select-window on \; display "Mouse ON!"

    采用了 12 楼的快捷键映射,按下后会杀掉当前 session 然后跳到下一个 session

    bind-key K confirm-before -p "Kill Session #S (y/n)?" "run-shell 'tmux switch-client -l \\\; kill-session -t \"\$(tmux display-message -p \"#S\")\"'" 
    第 2 条附言    2015-12-20 11:20:42 +08:00

    献上本人的配置

    dotfiles

    git clone https://github.com/tracyone/dotfiles git co V1.0.0 ./install.sh 
    13 条回复    2015-12-12 15:38:44 +08:00
    fityme
        1
    fityme  
       2015-12-09 23:18:20 +08:00
    首先,你需要给 session 命名。。。
    tracyone
        2
    tracyone  
    OP
       2015-12-09 23:19:58 +08:00
    @fityme 麻烦..
    cxbig
        3
    cxbig  
       2015-12-09 23:29:28 +08:00
    prefix+s 看所有的 session ,很显然你 new session 的命令没有做 alias
    cxbig
        4
    cxbig  
       2015-12-09 23:31:58 +08:00
    我自己做了个快捷方式,$ tx [session_name]
    不给 session 名字就自动创建一个新的自动编号,给了名字就做判断,有就 attach ,没有就 new
    cxbig
        5
    cxbig  
       2015-12-09 23:34:31 +08:00
    关于原有 terminal 的鼠标选择即 cp
    vim-mode 下加一个 copy-pipe 即可( Mac 版):
    bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"
    tracyone data-uid=
        6
    tracyone  
    OP
       2015-12-09 23:50:04 +08:00 via Android
    @cxbig 你这个复制粘贴我有解决,但是有问题,比如说你 xshell 上 ssh 登录,这种映射的复制并不能带到 win 上面啊,我需要的能复制到 win 上面。

    还有就是使能了鼠标之后,就无法正常的选择了而是进入了 tmux 的那种选择的模式也不能右键什么的
    cxbig
        7
    cxbig  
       2015-12-10 00:05:43 +08:00
    @tracyone
    从效率上讲,推荐纯键盘操作,适应 vim-mode 为佳;
    考虑 cp 一份 tmux 配置到远程,登录 ssh 后在远程开 tmux 。
    ETiV
        8
    ETiV  
       2015-12-10 00:08:52 +08:00   1
    小 m: 关闭 tmux 的鼠标功能. 然后就能自由选取文本(选取后复制啊什么的...)
    大 M: 打开 tmux 的鼠标功能. 可以在 tmux 的 pane 里翻页, 选中 window , blahblah...

    下面是代码, 如果格式不对, 请自行脑补:
    ```
    bind m setw -g mode-mouse off \; set -g mouse-select-pane off \; set -g mouse-resize-pane off \; set -g mouse-select-window off \; display "Mouse OFF!"
    bind M setw -g mode-mouse on \; set -g mouse-select-pane on \; set -g mouse-resize-pane on \; set -g mouse-select-window on \; display "Mouse ON!"
    ```
    lightening
        9
    lightening  
       2015-12-10 00:21:54 +08:00
    你是需要许多 session 的吗?
    我一台服务器只有一个 session 。下次上去就 attach 上原来的 session 呗。
    chaker
        10
    chaker  
       2015-12-10 00:24:04 +08:00 via Android
    只开一个 session ,多开 window 和 panel ,登录自动 attach
    Kai
        11
    Kai  
       2015-12-10 00:26:52 +08:00
    moved to /go/tmux :)
    liangqing
        12
    liangqing  
       2015-12-10 00:54:46 +08:00   1
    直接 tmux a 会 attach 到最近使用的 session ,无需重新创建一个新的 session

    可以通过 prefix s 选择切换 session

    关闭 session ,可以有下面的方法:
    1. 直接运行命令行
    tmux kill-session -t <session_name>
    session 名字可以通过 tmux ls 显示
    如果想关闭当前 session ,可以直接运行 tmux kill-session

    2. 通过 tmux 的冒号命令
    :kill-ession -t <session_name>
    同样,直接 kill-session 可以杀死当前 session

    3. 绑定一个快捷键
    bind-key K confirm-before -p "Kill Session #S (y/n)?" "run-shell 'tmux switch-client -l \\\; kill-session -t \"\$(tmux display-message -p \"#S\")\"'"

    这样按 prefix shift+K 后可以提示杀死当前 session
    ETiV
        13
    ETiV  
       2015-12-12 15:38:44 +08:00 via iPhone
    t mu x 2.1 改了配置项,所有跟 mouse 有关的,都只需要一个 mouse 就可以了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2792 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 13:21 PVG 21:21 LAX 06:21 JFK 09:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86