我知道,如果我想让 xterm 在按退格键时删除一个字符,我会这么做:
stty erase ^?
但我也希望 xterm 在按 shift+退格键时删除一个字符,但我找不到如何执行此操作的解释。
通过使用 ncurses 的一个小 C 程序,我确定当我按 shift+backspace 时,它会转换为以下字节序列:
27 91 51 59 50 126
当我按 ctrl-v 然后按 shift+backspace 时,它在 xterm 中显示为:
^[[3;2~
(其中 ^[ 当然是转义字符,ASCII 字节 27)。
我尝试stty erase
按 ctrl-v、shift+backspace 进行操作,但得到以下结果:
~ > stty erase ^[[3;2~
stty: invalid integer argument `\033[3'
Try `stty --help' for more information.
2~: Command not found.
有没有办法做到这一点?还是不可能,因为shift+backspace不是单个字节而是6个字节?
答案1
作为皮兹德莱克在评论中指出:
xterm -xrm '*VT100*translations: #override Shift <Key>BackSpace:string(\177)'
将其放入~/.Xresources
xrdb 中,以便每个会话都加载它。