奇妙な問題が発生しました。何が起こっているのかをよりよく説明する写真を追加します。
ご覧のとおり。使用git log
して終了した後(qまたはQまたは:qまたは^ Cを押す)、コマンドは使用できなくなります。
インターネット検索の最後にこのコマンドが見つかり、stty sane
端末が修正されたようです。しかし、私は言うことができません。なぜまたはどのようにGNOME端末を修理できますか?
私が見ることができる限り、修正は前後にstty -a
同じ出力を示しています。
デバッグを開始する方法についてのアイデアや提案はありますか?
VTE + GNUTLSのバージョン0.46.2を使用して、GNOME 3.22.2でgnome端末を使用しています。
編集する:
答えてくれてありがとう。 2つの構成をもう一度見てみましたが、違いがわかりました。
chris@Gentoo ~ $ diff stty-bad stty-good
4c4
< werase = ^W; lnext = <undef>; discard = ^O; min = 1; time = 0;
---
> werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
6c6
< -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl
ixon -ixoff
---
> -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl
ixon -ixoff
9c9
< isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -
tostop -echoprt
---
> isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop
-echoprt
まだ確認する必要があるリストが長く、オプションでできるだけ多く読みますが、答えは残ります。どのようにstty sane
問題を解決しました。何git log
それが本当の問題ではないからです。試してみましたがgit --no-pager log
、しばらくしてコミットを印刷して^ Cを押すと同じことが起こります...
編集2:
さて、各オプションを切り替えた後、ルートは-echo
可変です。しかしそれでは質問は一つしか残りません。なぜデフォルト変数を実行git log
または変更します。^C
echo
どこ根本原因を見つけることができますか?頑張ってますか?少ない(git logポケットベル)?それともGNOME端末?それともstty?
答え1
つまり、git log
きちんと整理されていません...単一のキーを押すのを待つアプリケーション(vi、lessなど)は、単純さを維持するために端末をエコーを抑制し、特殊制御文字を削除するなどのモードに切り替えます。ただし、クリーンアップしないと端末は使用できません。
このstty sane
コマンドは、単に端末モードを所定の値に設定する。編集文字が機能しない場合は変更できます(stty sane
削除文字を設定する一部のUnixプラットフォームを除く@
)。出力を比較するためにスクリプトを使用しましたが、stty
短くはありません...
4枚の写真には少なくとも1つの違いがあります(わかります)-icanon
、これはライン編集を妨げるのに十分です)。ちなみに後で見た内容はこんな感じですstty sane
。
$ stty -a
speed 38400 baud; rows 40; columns 80; 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; flush = ^O; min = 1; time = 0;
-parenb -parodd 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
もしそうなら、もう少し詳しく見てみると良いかもしれません。