如何使用 bindkey 映射 zsh 中的 Option-Shift-数字键

如何使用 bindkey 映射 zsh 中的 Option-Shift-数字键

zsh我在 Visual Studio Code 集成终端内运行tmux。我有一个瑞典键盘,我的 Macbook 运行的是 macOS 10.15.4 Catalina。

为了使 meta-f 和 meta-d 等键在此环境中工作,我需要将 visual studio code 设置设置terminal.integrated.macOptionIsMetatrue(参见https://github.com/microsoft/vscode/issues/11314) 但如果我这样做,以下字符将停止工作@$|[]\{}。静默推送它们会失败,不会打印任何内容。

如果我将其@$|[]添加到.zshrc

bindkey -s "\e2" @   # option-2 maps to the at-sign
bindkey -s "\e4" \$  # option-4 maps to dollar
bindkey -s "\e7" \|  # option-7 maps to vertical bar
bindkey -s "\e8" \[  # option-8 maps to left square bracket
bindkey -s "\e9" \]  # option-9 maps to right square bracket

(这些是瑞典语 Mac 键盘上的正常映射,例如Option-7通常会打印垂直条)

所以,我剩下的问题是如何使反斜杠、左花括号和右花括号(即)\{}在此环境中再次工作。

在瑞典语键盘上,通常按 来输入反斜杠Option-Shift-7。由于Shift-7是斜杠 ( /),我对此寄予厚望:

bindkey -s "\e/" \\

但这没有帮助。

  • 我怎样才能Option-Shift-7打印反斜杠?
  • 我怎样才能Option-Shift-8打印左花括号?
  • 我怎样才能Option-Shift-9打印右花括号?

答案1

我通过查看找到了答案美式键盘布局

假设我有一个美国键盘,我可以映射相应的键,即使这些键不在瑞典键盘上的这些位置:

bindkey -s '\e&' \\  # option-shift-7 maps to backslash ('&' is found on the US keyboard!)
bindkey -s '\e*' \{  # option-shift-8 maps to left curly brace ('*' is found on the US keyboard!)
bindkey -s '\e(' \}  # option-shift-9 maps to right curly brace ('(' is found on the US keyboard!)

例如:在瑞典键盘上&Shift- ,但在美式键盘上是- 。意思是,在 Mac 上是。这显然被解释为,尽管它“应该”在瑞典键盘上是。6Shift7\e&Meta-&Option-&zshOption-Shift-7Option-Shift-6

答案2

terminal.integrated.macOptionIsMeta我发现设置为的方向true是死路一条。读取输入的脚本仍然无法理解新配置的绑定键。

我最终设置回terminal.integrated.macOptionIsMeta并映射另一种方式:我测试了按下字母false时插入的 unicode 字符,然后对应该执行的 zsh 命令执行了。对于我的瑞典键盘,这是结果optionbindkey

# binding needed in VS Code integrated terminal when "terminal.integrated.macOptionIsMeta" is false
bindkey '' accept-and-hold # option-a
bindkey 'ƒ' forward-word # option-b
bindkey 'ç' fzf-cd-widget #option-c
bindkey '∂' delete-word #option-d
bindkey '›' backward-word # option-f
bindkey '¸' get-line # option-g
bindkey '˛' run-help #option-h
bindkey 'fi' down-case-word #option-l
bindkey '‘' history-search-forward #option-n
bindkey 'π' history-search-backward #option-p
bindkey '•' push-line #option-q
bindkey 'ß' spell-word #option-s
bindkey '†' transpose-words #option-t
bindkey 'ü' up-case-word #option-u
bindkey 'Ω' copy-region-as-kill #option-w
bindkey '≈' execute-named-cmd #option-x
bindkey 'µ' yank-pop #option-y

相关内容