Vim のようなフルスクリーン プロセスを終了した後にシェルを前の行に戻す方法

Vim のようなフルスクリーン プロセスを終了した後にシェルを前の行に戻す方法

私は接続しますZシェルRed Hat Enterprise Linux 6.2マシン上でパテUnix シェルで Vim や less などのフルスクリーン プロセスを終了すると、シェル プロンプトは画面の最後の行から始まります。上の画面にはまだそのプロセスのコンテキストが表示されているため、そのプロセスを開く前にシェルが表示していたものはすべて失われました。

これは私の Ubuntu ボックスでは発生しません。プロセスを終了した後、最後に入力したコマンドの下の行に戻ります。

zshrcUbuntu ボックスのように動作させるには、どのオプションを変更すればよいでしょうか (おそらく で)?

答え1

私もこの問題に遭遇しました。ターミナル > 機能の下にある PuTTY 設定を確認してください。「代替ターミナル画面への切り替えを無効にする」がチェックされている場合は、チェックを外してください。(そのページの私の設定はすべてチェックを外しています。) このオプションのヘルプは有望そうです。

それができない場合は、このページグーグルで検索すると、いくつかのアイデアが得られるかもしれません。terminfo の設定をいくつか行えば、正しく動作する可能性があります。

答え2

かなり前にこの問題を修正した後、同様の問題に遭遇しました。Vim ではこの問題は発生しませんでしたが、発生しました。これは、 など、lessを使用するすべてのプログラムに影響しました。原因は、呼び出されるたびに に自動的に渡される引数をリストする環境変数であることがわかりました。この問題の原因となった内のオプションは次の通りです。lessmanLESSlessLESS-X

-Xまたは--no-init

端末への termcap 初期化および非初期化文字列の送信を無効にします。非初期化文字列が画面をクリアするなど、不要な処理を実行する場合、これが望ましいことがあります。

私も学びましたUnix と Linux – 「less --quit-if-one-screenなし--no-init-X/ を無効にする場合は--no-init-F/--quit-if-one-screenも無効にする必要があります (設定されている場合)。

終了時に常に画面が復元されるように修正するには、適切なシェル初期化ファイルのlessの値を変更します。これは、 Bash の場合は 、Zsh の場合は 、Fish の場合は になります。このファイルに、コマンド、またはfish の場合は を追加します。事前に を実行して、 /ステートメントにコピーする既存のフラグを確認できます。LESS.bashrc.zshenv.config/fish/config.fishexport LESS='<all the flags you want, without -X or -F>'set -gx LESS <flags>echo $LESSexportset

答え3

分かりました!$TERMに設定するだけxtermです。以前はlinux

export TERM=xterm 

リンクとヒントをありがとう、デビッド!

関連情報