Mac 上的终端 - 删除键行为

Mar*_*zek 9 mac terminal backspace fn-key

我希望Mac 上的删除键(好吧,Fn+Backspace组合)在终端中的行为与正常情况相同。也就是说,要执行 forward-delete。现在它输出波浪号 - 至少这是我能看到的。

Mac OS X 上的 zsh 中的 Binding Fn-Delete 中,我看到了一些hackery并尝试了它:

(在下面的引号内按下 [Fn]+[<---])

$ echo "~" | od -c
0000000   ~  \n
0000002
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它表现?

Chr*_*sen 18

您链接的问题的答案显示了如何查找当您按下:时终端发送的控制序列。 这对于防止(可能的)初始 ESC 字符的特殊解释至关重要。FnBackspaceecho 'ControlV FnBackspace' | od -c
ControlV

终端大概发送四字节序列ESC [ 3 ~

您链接的问题是询问zsh。对答案的评论给出了在zsh 中绑定序列的命令,即:

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

(通常在~/.zhsrc)。

但是,bash是 Mac OS X 上的默认 shell,因此如果您使用bash : ,则绑定键的命令(以及可用于绑定的函数)将有所不同bind '"\e[3~": delete-char'。您可能希望将其放在bash启动文件1 中

如果您发现您正在使用bash,但您想改用zsh,那么有两种方法可以更改您的有效 shell:

  • 使用chsh -s /bin/zsh更改默认的shell。
    这将更改终端启动的 shell 以及为其他登录会话(例如通过 SSH 登录)启动的 shell。
  • Terminal的首选项中只配置Terminal以使用不同的 shell 。Terminal > Preferences...Settings工具栏按钮,然后是Shell选项卡, 将Run Command更改为 (eg) 。

    /bin/zsh -l

1通常~/.bashrc,但您也可以将相关行 ( "\e[3~": delete-char) 放入~/.inputrc。如果你把它放在你的.bashrc,你会想确保你也有一行像source ~/.bashrcin ~/.bash_profile,或者~/.bash_login(如果你没有,那么创建前者;如果你已经有一个,那么使用你拥有的一个;如果你两者都有,那么你应该解决这个问题,因为可能只有前者被使用)。