删除(转发)字符 iTerm2 OSX

问题描述 投票:0回答:4

我在 OSX 上使用 iTerm2,并且使用带有 Del 的外部键盘(不要与 Backspace 混淆)。 Del 键在 OSX 中工作正常,但在终端和 iTerm 中,它插入“~”而不是向前删除一个字符。 这在终端中很容易修复,但在 iTerm 中,没有键绑定或转义序列允许我删除光标右侧的字符(等效的 Unix 命令是 Ctrl D)。 有什么办法可以在 iTerm 中模拟向前删除一个字符吗?

macos keyboard keyboard-shortcuts iterm2
4个回答
24
投票

就像 Gajus 所说,如果没有输入,使用 Ctrl-D 向前删除一个退格键也会关闭终端选项卡,这可能会非常令人沮丧。

我正在使用 zsh,但将 ricpacca 建议的行添加到 .zshrc 对我来说不起作用。

我所做的是映射 Ctrl-Delete 以发送十六进制代码“0x06 0x08”。
0x06 翻译为“向前移动一个字符”,0x08 只是普通的退格键。

我想为任何其他在互联网上搜索但无济于事的沮丧的 iTerm2 用户分享我的解决方案。


23
投票

如果您使用 zsh,请尝试将这些行添加到 ~/.zshrc 文件中,然后关闭并重新打开终端:

bindkey    "^[[3~"          delete-char
bindkey    "^[3;5~"         delete-char

这些应该可以在任何键盘上启用删除键,而无需手动将键盘映射到十六进制命令

0x04
,这存在如果输入为空则关闭会话的问题。


为什么会这样?因为默认情况下 zsh 似乎不会使用键绑定读取 /etc/inputrc 。


15
投票

您可以在全局首选项中添加 iTerm 键盘映射或基于配置文件的按键,以发送 Ctrl-D (0x04)

即:这里我将 Ctrl-Delete 映射到

Erase
(Ctrl-D/0x04),就像扩展键盘的 Del 键一样:

enter image description here


4
投票

按键绑定可以设置预期的行为:

  1. 打开设置 -> 配置文件 -> 按键 -> 按键映射
  2. 单击加号添加密钥
  3. 记录 fn+del 按键
  4. 将下拉菜单更改为“发送转义序列”
  5. 输入
    [3~
    并保存。这将显示为
    ^[[3~
    ,这是包含转义的值

这不会像十六进制代码那样跳转,并且如果您不小心在最后一行删除得太远,您的终端也不会关闭。

© www.soinside.com 2019 - 2024. All rights reserved.