我正在尝试更改控制台 (Konsole) 中的某些键绑定。如果我将 intr 映射到 Ctrl-k,则通过运行
stty intr \^k
我没有看到变化反映在
stty -a
speed 38400 baud; rows 46; columns 172; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
为什么会这样?
请注意,Ctrl-K 正在发送中断。Ctrl -C 继续发送中断。如果我尝试通过运行取消映射 Ctrl-C
stty intr ^-
或者
stty intr undef
它没有变得未定义,并且 stty -a 仍然显示与之前完全一样的内容,“intr = ^C;”
更新:我现在怀疑这与我运行的 shell (fish) 有关。在另一个 Konsole 选项卡中,我使用不同的配置文件,以便使用 bash,我得到了预期的行为。
答案1
这已经永远被打破了。参见
https://github.com/fish-shell/fish-shell/issues/2315
https://github.com/fish-shell/fish-shell/issues/814
https://github.com/fish-shell/fish-shell/issues/1041
还有其他几个。解决方法是使用 bash、zsh、ksh 或 sh 运行stty
命令,然后执行exec fish
。