有没有一个 tmux 快捷方式可以只读?

有没有一个 tmux 快捷方式可以只读?

我多年来一直使用屏幕作为确保任何远程工作在断开连接/崩溃后安全地保持打开状态的一种方式。事实上,即使在本地工作,我也理所当然地使用屏幕。

最近,我的需求已经发展到了我转向 tmux 的阶段,因为它的优点:

tmux attach -r

以只读模式(-r)附加到我自己的会话意味着我不必担心意外:

  • 在 IRC 中粘贴垃圾行
  • 停止重要的编译/部署过程
  • 在路人的众目睽睽之下输入密码

当然,问题是我必须打开一个会话,Cb + d 来分离,然后使用 -r 标志重新打开它以变为只读。然后,当我偶尔想要加入 IRC 对话、中断任务或执行其他操作时,我必须再次断开连接并正常重新连接。

有谁知道如何通过按键绑定在模式之间切换?

答案1

tmux 1.9a你可以做的:switch-client -r。我不确定这是否是 1.9a 中的新增功能,但这是我正在运行的版本,并且我能够将现有 tmux 会话更改为只读模式。

答案2

不根据手册页,它仅调用attach -r启用只读模式的选项。

另外,在源代码,只有以下行cmd-attach-session.c设置只读标志。代码的其余部分检查是否设置了此标志,但不更改其值。再说一遍,除非您可以进行(或请求)代码更改,否则您似乎运气不佳:

    if (cmd_check_flag(data->chflags, 'r'))
        ctx->cmdclient->flags |= CLIENT_READONLY;

答案3

在 中tmux 2.9aman tmux说(在 下attach-session):

     -r signifies the client is read-only (only keys bound to the
     detach-client or switch-client commands have any effect)

基于此,您可以制作通过提供您自己的绑定来进入只读(和返回)的快捷方式:switch-client -r

# Toggle read-only with <prefix>R
bind-key R switch-client -r

当客户端为只读时,这也将起作用。

请注意,添加附加display-message命令将不起作用:tmux将拒绝运行该键的绑定函数,因为它不再只是一个switch-client命令。

相关内容