Mar*_*ter 3 command-line bash emacs
在 bash 命令行上编写命令时,我可以使用CTRL+w向后ALT+d删除单词,或向前删除单词。
问题是,这两个快捷方式并不完全互补:CTRL+w删除最多一个空格的所有内容,而ALT+d最多删除任何非字母字符(即停在/)
是否有充当ALT+d,但向后的快捷方式?
这样当我在最后/etc/hostname 按下快捷方式时,我最终会得到/etc/.
bind -p为您提供当前绑定。你会发现,Ctrl+W势必会unix-word-rubout和Alt+D到kill-word:
"\C-w": unix-word-rubout
"\ed": kill-word
Run Code Online (Sandbox Code Playgroud)
如果你做一个bind -p | grep kill-word,你会发现:
"\e\C-h": backward-kill-word
"\e\C-?": backward-kill-word
Run Code Online (Sandbox Code Playgroud)
一些终端发送^H,Backspace另一些终端发送,^?这就是为什么有两个绑定。这使得Alt+Backspace至少在Alt+X发送ESC字符后跟X.
然而,有一些终端在发送X第 8 位(0xD8)时Alt+X(尽管它们变得越来越少,因为这在这个新的 UTF-8 世界中没有多大意义)。在那些情况下,您必须按Esc,然后Backspace,或者您可以在 readline 配置中设置convert-meta为on(例如使用bind 'set convert-meta on'),但是您将无法输入非 ascii 字符。