我在 OSX 上使用 iTerm2,并且使用带有 Del 的外部键盘(不要与 Backspace 混淆)。 Del 键在 OSX 中工作正常,但在终端和 iTerm 中,它插入“~”而不是向前删除一个字符。 这在终端中很容易修复,但在 iTerm 中,没有键绑定或转义序列允许我删除光标右侧的字符(等效的 Unix 命令是 Ctrl D)。 有什么办法可以在 iTerm 中模拟向前删除一个字符吗?
就像 Gajus 所说,如果没有输入,使用 Ctrl-D 向前删除一个退格键也会关闭终端选项卡,这可能会非常令人沮丧。
我正在使用 zsh,但将 ricpacca 建议的行添加到 .zshrc 对我来说不起作用。
我所做的是映射 Ctrl-Delete 以发送十六进制代码“0x06 0x08”。
0x06 翻译为“向前移动一个字符”,0x08 只是普通的退格键。
我想为任何其他在互联网上搜索但无济于事的沮丧的 iTerm2 用户分享我的解决方案。
如果您使用 zsh,请尝试将这些行添加到 ~/.zshrc 文件中,然后关闭并重新打开终端:
bindkey "^[[3~" delete-char
bindkey "^[3;5~" delete-char
这些应该可以在任何键盘上启用删除键,而无需手动将键盘映射到十六进制命令
0x04
,这存在如果输入为空则关闭会话的问题。
为什么会这样?因为默认情况下 zsh 似乎不会使用键绑定读取 /etc/inputrc 。
按键绑定可以设置预期的行为:
[3~
并保存。这将显示为 ^[[3~
,这是包含转义的值这不会像十六进制代码那样跳转,并且如果您不小心在最后一行删除得太远,您的终端也不会关闭。