删除(向前)字符 iTerm2 OSX

12

我在Mac OS X上使用iTerm2,并使用一个带有Del(不要与Backspace混淆)的外部键盘。在OSX中,Del键运行正常,但在终端和iTerm中,它插入“~”而不是向前删除一个字符。在终端中,这很容易修复,但在iTerm中,没有任何键绑定或转义序列可以让我删除光标右侧的字符(相当于Unix命令CtrlD)。是否有任何方法可以模拟在iTerm中向前删除一个字符?

4个回答

23

像 Gajus 所说的那样,使用 Ctrl-D 可以向前删除一个退格符,但如果没有输入内容,它也会关闭终端标签页,这可能非常令人沮丧。

我正在使用 zsh,但是将 ricpacca 建议的行添加到 .zshrc 中对我没有起作用。

相反,我将 Ctrl-Delete 映射到发送十六进制代码“0x06 0x08”。
0x06 代表“向前移动一个字符”,0x08 则是普通的后退键。

想为其他在互联网上搜寻了却找不到解决方法的 iTerm2 用户分享我的解决方案。


4
太棒了!你是个英雄。谢谢。这应该被接受为答案,因为它比使用“0x04”要少得多地干扰性。 - philraj
1
提醒其他人,这种方法有两个缺点:1. 如果在删除时到达行尾,它将像普通的退格键一样工作,即删除光标前而不是后面的字符。2. 它会破坏vi/vim中del键的功能,很可能也会破坏其他具有特殊用途的应用程序中的del键功能。特别是后者对我来说是致命的。不幸的是,我没有其他解决方案,只能切换到Hyper,在那里该键可以直接使用。 - Dantel35

22

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

如果你正在使用 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

11
“0x04”的问题在于,如果输入为空,它会关闭选项卡。当意外发生时,这会让人非常沮丧。 - Gajus
只有当你不习惯它时,它才是一个问题。从Linux来看,这正是我所期望的行为。 - PierreE

1
按键绑定可以设置预期的行为:
  1. 打开设置 -> 配置文件 -> 键盘 -> 键映射
  2. 点击加号添加一个按键
  3. 记录 fn+del 的按键组合
  4. 将下拉菜单改为 "发送转义序列"
  5. 输入 [3~ 并保存。这将显示为包含转义的值 ^[[3~

这不像十六进制代码那样跳来跳去,如果你在最后一行意外删除太多,你的终端也不会关闭。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接