为什么按delete键时`zsh`会插入`~`?

Nat*_*ese 8 vim zsh command-line

我已将我的样式设置zsh为使用vim样式来编辑命令行。

但是,当我使用该Delete键时,它会插入一个~字符。

我是否配置错误zsh

我如何关闭它?

我需要返回到不同的命令编辑模式zsh吗?

我对 有点陌生zsh,也许这个问题的答案可以帮助其他新手进行初始配置。

ale*_*dwm 11

回答是因为这是搜索同一问题的第一个 DDG 结果。

首先,您需要获取删除键的代码。

转到您的 shell 提示符,例如:

alec@su:~$
Run Code Online (Sandbox Code Playgroud)

执行“cat”程序,您将使用该程序确定与您的“删除”键对应的代码。

alec@su:~$ cat
Run Code Online (Sandbox Code Playgroud)

按键盘上的“删除”,cat 将显示相应的代码。

alec@su:~$ cat
^[[3~
Run Code Online (Sandbox Code Playgroud)

您可能需要按“输入”才能显示代码。我没有。

最后,按 'Ctrl+C' 向 cat 发送一个 SIGTERM 信号(即退出程序执行)

alec@su:~$ cat
^[[3~^C
alec@su:~$ cat
Run Code Online (Sandbox Code Playgroud)

现在,您只需要配置 zsh。

对我来说,删除发送^[[3~,所以我可以将以下内容放入我的 .zshrc 文件中:

bindkey "^[[3~" delete-char
Run Code Online (Sandbox Code Playgroud)

重新启动 zsh,您应该一切顺利!:)

  • 关于为什么 zsh 中默认删除键不是删除字符的任何传说? (10认同)
  • @SLCH000 找到了这个[Anne Baretta 的存档帖子,进一步解释了](https://web.archive.org/web/20010524234948/http://www.ibb.net/~anne/keyboard.html):`键盘映射这个问题可以追溯到计算机使用穿孔带的时代。... Linux 控制台模拟 vt220 终端,它具有以下键映射: ... [Delete] ---> 删除 ---> "\e[3~"` (3认同)
  • 另外,如果您想避免使用魔法常量,可以使用 `$terminfo`,如 [Arch Wiki](https://wiki.archlinux.org/title/Zsh#Key_bindings) 上所述。 (3认同)
  • 默认情况下(或者可能在配置 vi 模式之后),当您按下“删除”键时,您的 zsh 不知道要做什么。如果您按下了与“^[[3~”之类的东西相对应的键,它就知道了。 (2认同)