Gli*_*ome 3 bind tmux utf-8 xbindkeys
我在 Fedora 17 i686 上使用带有 konsole 的 tmux 1.6。
我有一个 azerty 键盘(带有重音字符),我想绑定 'ù' 键。
我做了以下 ~/.tmux.conf:
setw -g utf8 on
bind-key ù split-window -h
Run Code Online (Sandbox Code Playgroud)
但是,当我运行 tmux 时,出现以下错误:
/home/glines/.tmux.conf: 2: unknown key: ù
Run Code Online (Sandbox Code Playgroud)
有没有办法绑定这个键?
对于您的帮助,提前致谢。
不幸的是,tmux在其键绑定中仅支持单个 8 位值。
如果您使用的是(固定长度)8 位编码(例如 ISO 8859-1、ISO 8859-15 等),那么绑定应该有效。但是,如果您使用的是 UTF-8,则您的ù (U+00F9) 被编码为两个字节 (C3 B9),并且tmux 将其拒绝为未知的密钥名称(如果密钥长于单个字节(在剥离其改性剂的前缀),它被处理为一个特殊的键例如名称F1
,PageUp
,KP0
,等等)。
不过,如果你绝望了,你可以尝试一个严重的黑客攻击:
tmux bind-key -r $(printf '\303') display 'c3 prefix binding hack' \; \
bind-key -r $(printf '\271') split-window -h
Run Code Online (Sandbox Code Playgroud)
这滥用了“重复”绑定功能,使用它保持“前缀模式”,同时基本上忽略 ù(十六进制 C3 B9,八进制 303 271)的 UTF-8 编码的第一个字节。
ù(八进制303)的第一个字节绑定到一个虚拟命令,第二个字节(八进制271)绑定到目标命令。这要求您不能将tmux repeat-time
选项设置为零(以禁用重复),并且在您键入后将tmux留在其重复模式repeat-time
几毫秒(默认为 500 毫秒)的Prefixù副作用(这种副作用通常只会是如果您在之后立即键入箭头键(带或不带Control或Meta),您会注意到——这些Prefixù键是唯一“可重复”的默认绑定)。
上面的示例使用printf
shell 命令生成所需的字节,但这在您的.tmux.conf
. 如果你正在运行tmux 1.7,你可以这样写(在你的.tmux.conf
):
bind-key -r 0xC3 display 'c3 prefix binding hack'
bind-key -r 0xB9 split-window -h
Run Code Online (Sandbox Code Playgroud)
但是,此十六进制密钥语法在tmux 1.6 中不起作用。因此,您要么需要将原始字节直接安排在文件中(您的文本编辑器可能会在这方面与您争吵,而且很容易出错),或者使用 shell 来帮助您:
run-shell "tmux bind-key -r $(printf '\\303') display 'c3 prefix binding hack' \\; bind-key -r $(printf '\\271') split-window -h"
Run Code Online (Sandbox Code Playgroud)
注意:run-shell
异步运行其命令,因此在您的第一个会话开始后可能无法立即使用绑定。
归档时间: |
|
查看次数: |
1848 次 |
最近记录: |