As part of my startup script to set up my desktop, I initialize a screen with several windows. I do this by starting a daemon and sending it -X screen
and -X stuff
commands, finally reattaching with -r
.
Unfortunately, the "create daemon and reattach" method makes all the windows I created turn backspace into a "kill whole line" action. If I create new windows within screen with C-c c
, the new windows do not have this behavior. Is this a screen bug, or can I do something special to fix this behavior? I'm using xfce4 and ubuntu 12.10 if that matters
Repro with the following:
screen -S -dm
screen -r
Type several characters and press backspace.
I'm not sure if I'm having the exact same problem as you, as your repro steps didn't work for me, but I did have the same bad behavior in screen
(backspace killing the whole line), and managed to fix it.
For me, somehow I repeatedly get into a state where the output of stty
is this:
$ stty
speed 9600 baud;
lflags: echoe echok echoke echoctl
iflags: -ixany -imaxbel ignpar
oflags: tab3
cflags: cs8 -parenb -hupcl clocal
eol eol2 erase2 kill min
^@ ^@ ^@ ^H 0
Two things to note here:
erase
, only erase2
kill
is mapped to ^H
#2 explains my issue, though #1 needs fixing, too.
Normally, ^U
is "kill line", but here it is ^H
instead.
If I type Ctrl-V, <backspace>
, my terminal outputs ^H
. So due to that mapping above, that causes the kill
(kill line) to happen.
This fixed it for me:
$ stty kill ^U
# now, backspace outputs a literal ^H to the screen, so...
$ stty erase ^H
Note that in order to input the ^H
and ^U
, you have to use the literal control characters. I do this on my terminal with Ctrl-V, <backspace>
and Ctrl-V, Ctrl-U
, respectively.
I hope it helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With