AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1866480
Accepted
lineage
lineage
Asked: 2024-12-19 22:26:49 +0800 CST2024-12-19 22:26:49 +0800 CST 2024-12-19 22:26:49 +0800 CST

tmux:无法将 Ctrl+3 `bind-key` 绑定到 '#'

  • 772

以下无法将字符“#”绑定到按Ctrl+3tmux

# ~/.tmux.conf
unbind-key -T root C-3
bind-key -T root -N '#' C-3 send-keys '#'
# in a tmux session
tmux source-file ~/.tmux.conf

问题是什么?

我的终端仿真器是Alacritty。这是xxd对Ctrl+ 3、Ctrl+ D、Ctrl+ 的反应D:

>>>xxd
^[00000000: 1b                                       .
>>>
tmux
  • 1 1 个回答
  • 36 Views

1 个回答

  • Voted
  1. Best Answer
    Kamil Maciorowski
    2024-12-20T14:22:02+08:002024-12-20T14:22:02+08:00

    分析

    问题是什么?

    问题是:对于从终端读取的程序来说,没有Ctrl+这样的东西3。

    终端和终端仿真器不会传递最终到达程序(例如 tmux 客户端)的按键,而是传递字节流。某些键(或组合)会生成单个字节,某些键(组合)会生成(或多或少标准的)字节序列。没有为Ctrl+唯一分配的标准字节或序列3。在Ctrl+上,3虚拟终端(例如 tty4)只会为我打印3。我的 Kubuntu 中的 Konsole 会生成转义字符。

    您发布的输出显示您也获得了转义字符。在这种情况下,(或任何仅使用终端从键盘读取的程序)xxd无法区分+和。tmuxCtrl3Esc

    不要尝试bind-key -T root '^[' …,因为这会破坏Esc在 tmux 下运行的程序。

    不局限于从标准输入读取的程序/dev/tty(尤其是带有 GUI 的程序)可以(半)直接读取按键,并且可以Ctrl将+与其他任何东西区分开来3。Tmux 不属于这些程序,但终端仿真器属于这些程序。


    解决方案

    我不知道 Alacritty。也许您可以自定义 Alacritty 在Ctrl+上发送的字节(或字节序列) 3。如果是这样,那么您可以让Ctrl+3在其下运行的程序可区分。如果您知道 tmux 识别为C-3,则可以配置终端仿真器以生成此内容。

    不幸的是,我不知道 tmux 识别什么C-3(见下面的观察)。

    如果您设法让终端仿真器在Ctrl+上生成自定义序列3,那么(至少在原则上)您将使在其下运行的程序能够区分按键。然后您可以相应地配置 tmux(这可能需要链接键表)。

    但是如果您只想获取#,那么只需配置终端仿真器,首先在Ctrl+上发送这个精确的字符。Tmux 客户端(或任何程序)将直接获取,例如在+上;无需。3#AShiftAbind-key


    观察

    我在 tmux 中的 shell 中运行,它显示(byte ) 和(byte )tmux send-key C-a C-3 C-b C-d C-d; xxd之间没有生成任何内容。我得出的结论是,tmux 本身不知道在即将发送“击键”时对它意味着什么。因此,我怀疑它在读取它们时是否知道对它意味着什么。C-a0x01C-b0x02C-3C-3

    另一方面,tmux 确实允许我们将某些东西绑定到C-3,就好像它知道它应该意味着什么一样。为了比较:尝试tmux bind-key C-% …产生unknown key: C-%。

    即使 tmux 将某些内容识别为C-3,您的 Alacritty 也不会在Ctrl+上生成它3(暂时)。

    我试图在源代码中找到C-3对 tmux 可能意味着什么。我失败了。(我不是程序员。)


    结论

    无论 tmux 是否知道它的含义,当前您的终端仿真器都会在+C-3时发送转义字符。更改它发送的内容应该是您的第一步。Ctrl3

    • 1

相关问题

  • 更改缩放窗格的 Tmux 背景颜色

  • 在 tmux 中启用非官方的 terminfo 扩展

  • tmux 挂起和 tmux 分离之间的区别

  • 为什么 tmux 和 oh-my-zsh 都破坏了 WSL 下 git log 的颜色输出?

  • tmux 如何产生多个会话?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve