xterm
:
$ echo $TERM
xterm-256color
$ stty -a
speed 38400 baud; rows 52; columns 91; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^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
gnome-terminal
:
$ echo $TERM
xterm-256color
$ stty -a
speed 38400 baud; rows 57; columns 100; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?; swtch = M-^?;
start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^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
屋外では--output.tmux
内部で実行されているかどうかを理解し始めました。内部で実行すると、まだ出力されます。その理由は何ですか?出力する必要がありますか?この問題を解決するには?Ctrlv Ctrlh^H
tmux
^?
xterm
screen
xterm
^H
^H
^?
ベストアンサー1
その理由は、xtermで^H
これがerase
文字で、tmux
そのerase
文字が明らかにエミュレートする端末の対応する制御文字()に変換され、削除が^?
期待どおりに機能するためです。調理モード(たとえば、入力するとどうなりますかcat
?)^?
削除文字(キーで生成)を持つ端末を使用し、Backspace削除文字(キーで生成)として機能する端末を使用してセッションを復元する場合は、変換する必要があります。残念ながら、+を入力した場合など、一部のケースでは重大な副作用が発生する可能性があります。^H
BackspaceCtrlH
唯一の良い解決策は、すべての端末(実際またはtmux)が同じerase
文字を使用していることを確認することです。^?
これは今日の標準です。 xtermの設定が間違っているようです。 AFAIK、これはデフォルト設定ではありません。
TERM
それにもかかわらず、それを表現するために値を使用する必要がありますkbs=\177
。しかし、これはいいえxterm-256color
公式ncursesの例。したがって、別の値を選択するか、項目を変更する必要がありますTERM
(エンドユーザーは、修正、およびを使用して実行できます)。一部のLinuxディストリビューションにはこの問題はありません。たとえば、Debianはソースパッケージのファイルを介してこの問題を解決します。kbs
xterm-256color
infocmp > file
file
tic file
debian/xterm.ti
ncurses
$ infocmp xterm-256color | grep kbs
kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
以下も必要です。
$ appres XTerm | grep backarrowKeyIsErase:
*backarrowKeyIsErase: true
他の操作を実行する前にxtermでこれを実行できますが、stty erase '^?'
これは回避策であり、キーの動作が中断される可能性がありますBackspace。基本的に実際にはerase = ^?
(図のように)する必要がありますstty -a
!
問題が続くBackspaceかDelete続く場合は、以下をお勧めします。一貫したBackSpaceと設定の削除アンバレッタのファイル。