如何在tmux中使用Ctrl-semicolon作为前缀?

jef*_*jef 7 tmux

我想使用Ctrl-semicolon作为tmux的前缀.但我的conf不起作用.

 unbind-key C-b  
 set-option -g prefix C-\; 
Run Code Online (Sandbox Code Playgroud)

我发现了一篇类似的文章.但它不是前缀. tmux绑定分号

顺便说一下,你最喜欢的前缀键是什么?:D你有推荐钥匙吗?

小智 13

终端无法注册Ctrl-;击键.这不是一个有效的角色.如果你看下面的ascii表中的控制字符,你会看到Ctrl-;不在列表中.

在此输入图像描述

我在OS X上,当我输入Ctrl - ;(终端和"桌面"程序)时,我收到一个铃声,表明该字符无法被识别.

至于"最喜欢的"前缀键:从我看到的阅读其他人的.tmux.conf文件,Ctrl-a是最受欢迎的选择.这是有道理的,因为:

使用的缺点Ctrl-a是您不能在bash或vim中使用相同的密钥,但通过以下绑定可以轻松解决这个问题.tmux.conf:

bind-key 'C-a' send-prefix
Run Code Online (Sandbox Code Playgroud)

有了它,按Ctrl-a两次将发送相同的字符到底层程序(例如bash或vim).


小智 6

正如其他人所说,您无法绑定,Ctrl-;因为它不是有效的字符。

我喜欢这个前缀,因为当 CapsLock 重新映射到 Ctrl 时按下它真的很容易。

对于 Linux,我的解决方法是重新映射Ctrl-;Ctrl-Bxkb 级别。 Xkb是处理键盘布局的 Xorg 子系统。

我使用的是 us 布局,所以我修改了第/usr/share/X11/xkb/symbols/us42 行:

key <AC10> {     [ semicolon,    colon           ]       };
Run Code Online (Sandbox Code Playgroud)

//  key <AC10> {     [ semicolon,    colon           ]       };
key <AC10> {                                                  
   type="BABEL_CONTROL_LEVEL3",                               
   symbols[Group1]= [ semicolon, colon, b ]                   
};                                                            
Run Code Online (Sandbox Code Playgroud)

这告诉 Xkb 在第 1 级生成 for AC10(C 行中的第 10 个按钮)分号(无修饰符),在第 2 级生成冒号(Shift 修饰符),在第 3 级生成 b(Ctrl 修饰符)。

Xkb 中的 Level 3 通常不能通过 Ctrl 激活,因此我创建了一个新的按键类型,我将其称为BABEL_CONTROL_LEVEL3。您需要将其定义放入/usr/share/X11/xkb/types/pc

type "BABEL_CONTROL_LEVEL3" {
    modifiers = Shift+Control;
    map[Shift] = Level2;
    map[Control] = Level3;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Control";
};
Run Code Online (Sandbox Code Playgroud)

您需要重新启动 X 或重新启动。

对我有帮助的资源列表: