これは長くて基本的な答えですが、下記のOPの回答にリストされているCtrl-Dの問題についても説明しました。
私はここで大きな混乱を見ます ターミナル そして シェル 。スクロールはあなたのシェルではなく、あなたの端末で行われます。何 screen
そして tmux
する、する 追加する サブウィンドウごとにあなたのgnome端末の上に別の端末があります(最初は奇妙に聞こえるかもしれませんが、端末はあなたのものと正確に同じではありません)。 見る しかし、本当に/ dev / pts /の下にある単なるデバイスで、プロセスはそこからバイトを読み書きすることができます。
screenが擬似端末を動かしているとき 上に あなたのgnome-terminalでは、gnome-terminalが既に傍受しているキーを傍受することはできません。それはそれ自身のショートカットキーを持つ必要があります、そしてユーザーとしてあなたはgnome-terminalが理解するショートカットキーを押すことになっていません。できますが、gnome-terminalはscreenが作成した混乱を認識していないので、結果はあなたが期待したものにはなりません。
実際にはショートカットはあなたのシェルによってのみインターセプトされるかもしれません(シェルが文字を読むターミナルによってではありません)が、Ctrl-A(スクリーンによってインターセプトされる唯一のキーは端末サブシステムに傍受された(Ctrl-Cなど)。彼らはまったく同じように動作するはずです。それによって通常解釈されるショートカットのいくつか bash
シェルはCtrl-A(画面内、Ctrl-A aを使用する必要があります)でカーソルを編集したコマンドの先頭に移動し、Ctrl-E(画面内ではなく画面内と同じように機能します)に移動します。終わり。
複雑に聞こえるかもしれませんが、端末は単にバイトを読み書きできるファイルなので、とても単純です。あなたが興味を持っているならば、これは多くの関連する事柄をカバーする素晴らしい記事です: http://www.linusakesson.net/programming/tty/index.php
気になるCtrl-D(キーの組み合わせ) シェル )問題は、Ctrl-Dで生成された文字が、gnome-terminalとscreen-terminalの両方で同じであることを確認するべきです。あなたはできる 見る 例えばの文字 cat
。私はそれらが実際に同じであることを疑い(それは私のシステムでもそうです)、もしそうなら、それはscreenがgnome-terminalとは別のシェルを通常起動したことを意味します。この場合、gnome-terminalによってネイティブに起動されているシェルを調べて、スクリーンセッションでこのシェルを(同じコマンドライン引数で)起動してください。