如何修改删除左侧“单词”的命令的行为

如何修改删除左侧“单词”的命令的行为

我最近尝试从长期的 tcsh 用户切换到 bash,并且我为删除左侧的“单词”而需要额外的按键而感到遗憾,因此我一直在研究修改 bash 中的行为,使其更像 tcsh,这样我就不必重新映射我 18 年的肌肉记忆。我目前正在尝试弄清楚的是:

如何在escape delete输入时更改“单词边界”。 (注意,我的意思是按两次单独的键。)

在 tcsh 中,当我想删除左侧的一个单词时,我会重复 2 次按键:escape 删除。我知道 bash 使用 control-w 删除左侧的单词,我已经想出了如何让它忽略破折号和下划线作为单词边界(但我的 tcsh 肌肉记忆使用 control-w 删除光标左侧的所有内容 - bash 的 control-u)。您可以执行以下任一操作:

bind '\C-w:unix-filename-rubout'

或者

stty altwerase

(尽管我还不知道这是否会产生任何意想不到的副作用 - 我仍在试图弄清楚)。它们都允许使用 control-w 通过破折号和下划线进行删除,但我不知道它们在其他方面有何不同。

然而,令我惊讶的是,escape delete这两种情况下的按键顺序仍然停在破折号和下划线处。我尝试了不同的绑定命令来更改此设置,例如:

set bind-tty-special-chars Off
set bind-tty-special-chars On
bind '\e\C-h:unix-filename-rubout'
bind '\e\C-?:unix-filename-rubout'

但它们都没有改变 的词边界行为escape delete

一些注意事项:我真的不知道escape delete我的终端在做什么 - 即它向 bash 发送了什么。如果我这样做control-v escape,我会看到^[。如果我这样做control-v delete,我会看到^?。我在 macOS 上使用 Terminal.app。我将删除键设置为不是发送 control-h,因为它并非在任何情况下都按我预期的方式运行。我也没有将 option 设置为元键,因为我一直很谨慎,不会干扰使用 option-arrow 和 option-click 进行光标移动。

相关内容