我有以下自定义 zsh 键绑定,用于 alt(元)+ 左右箭头键与 i os x Iterm2 和元的 +Esc 设置
bindkey "^[^[[D" backward-word
bindkey "^[^[[C" forward-word
这允许在 shell 上按单词跳转,就像在大多数带有 alt 箭头的 GUI 文本编辑器中一样。
但是,当启动 tmux 会话时,这些绑定只会在屏幕上打印。
DCDCDC
知道如何让 tmux 中的 zsh 接受绑定。
答案1
Meta转义符表示元仅适用于+ cwhere形式的组合C是可打印字符或控制字符。大多数终端不会在转义序列前面添加转义字符,因此您可以键入两个连续的转义字符来触发Escape应用程序中的绑定,并且转义序列在初始转义字符之后不包含控制字符。
要查看终端针对击键发送的转义序列,请在 shell 提示符下或在 中按Ctrl+V然后按该击键,例如Ctrl+V然后Meta+ 。在熟模式下的终端以及 shell 和 Vi 等应用程序中,+表示“按字面意思插入下一个字符,即使它是控制字符”,因此+后跟发送转义序列的击键会导致插入该转义序列(假设转义序列除了前导转义字符之外不包含任何控制字符)。Leftcat
CtrlVCtrlV
你可能会看到这样的东西:
^[O1D
意味着Meta+Left发送转义字符,后跟三个字符O1D
。这意味着您需要绑定
bindkey "^[O1D" backward-word
答案2
每次添加set-option -g xterm-keys on
到tmux.conf
或进入:set-option -g xterm-keys on
tmux 内部。
答案3
既然您提到您正在使用 iTerm - 请看一下这个答案:
https://stackoverflow.com/a/70451722/4936193
玩bindkey
设置对我来说不起作用,然后我刚刚删除了所有这些并更改了我的 iTerm 设置正如那里所描述的,一切都很顺利:)