是否有只读的 tmux 快捷方式?

con*_*nrs 27 terminal-multiplexer tmux

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

最近,我的需求已经发展到我切换到 tmux 的阶段,因为它的美:

tmux attach -r
Run Code Online (Sandbox Code Playgroud)

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

  • 在 IRC 中粘贴垃圾行
  • 停止重要的编译/部署过程
  • 为路人在全视图中输入密码

当然问题是我必须打开一个会话, Cb + d 分离,然后用 -r 标志重新打开它以进入只读状态。然后,当我偶尔想加入 IRC 对话、中断任务或其他任何事情时,我必须再次断开连接并正常重新连接。

有谁知道一种通过键绑定在模式之间切换的方法?

Mat*_*son 27

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

  • 这对于进入只读模式非常有用,但是有没有办法在不分离和重新连接的情况下退出只读模式?看起来不像,但这将是一个有用的功能。 (2认同)

Jus*_*ier 23

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

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

    if (cmd_check_flag(data->chflags, 'r'))
        ctx->cmdclient->flags |= CLIENT_READONLY;
Run Code Online (Sandbox Code Playgroud)


小智 5

在 中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)
Run Code Online (Sandbox Code Playgroud)

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

# Toggle read-only with <prefix>R
bind-key R switch-client -r
Run Code Online (Sandbox Code Playgroud)

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

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