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

TMUX 的两个问题

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

    session 的关闭

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

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

    :kill-session $session_name
    

    但这样不方便,一来是 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
        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  
    MOD
       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-session -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   ·   实用小工具   ·   2952 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:12 · PVG 16:12 · LAX 00:12 · JFK 03:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.