
私は、bash (または vim) の機能とは何かを調べようとしています。シナリオは次のとおりです。私は bash ターミナルにいて、vim で何かを編集し、終了して bash に戻ります。一部のターミナルでは、vim セッション画面が消えて、以前の bash シェルのアクティビティが表示されます (これが私が望んでいることですか?)。
他の場合、vim セッション画面バッファは残ります (古い bash シェルのアクティビティが非表示になります)。画面をクリアするか、bash アクティビティによって vim セッション バッファが画面から押し出されるまで待つ必要があります。
この動作を制御して、vim セッション バッファを以前の bash アクティビティに置き換えるにはどうすればよいですか?
ありがとうティム
答え1
Vim はセッションが開始されると とt_ti
をターミナルに送信し、セッションが終了すると と を送信します。 とのシーケンスにより、ターミナルは別の画面に切り替わります。t_ks
t_te
t_ke
t_ti
t_te
ファイルに次の行を含めると、終了時にドキュメントを画面に残すこと~/.vimrc
ができます。vim
set t_ti=""
これに似た行がある場合は、それを削除すると、終了時に以前のターミナルの内容が表示されるはずですvim
。
答え2
~/.bash_profile
ログインするたびに TERM を xterm としてエクスポートするには、ファイルに 1 行追加するだけです。次のようにします。
echo "TERM=xterm; export TERM" >> ~/.bash_profile
次回ログインすると問題は解決されます。再度ログインしたくない場合は、次のいずれかを実行できます...
// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile
答え3
この問題の原因は、プログラムの使用にある可能性がありますscreen
。セッション中は、screen
vim がターミナル状態を返すことができないことがわかりました。
これが screen に固有のものか、Ubuntu 15.10 の screen/vim の組み合わせに固有のものかはわかりません。上記と同じ原因ですが、screen
termcap が異なるのだと思います。
答え4
Tim。上記の回答は両方とも正解です。$TERM の termcap エントリでその機能が定義されている場合、Vim は端末を「代替画面」に切り替えます。
「一部の端末では(...正常に動作します...)」と「他の端末では(...正しく動作しません...)」と言います。
これらすべての端末に対してまったく同じ端末エミュレータを実行していますか?
たとえば、私の自宅の Linux ボックスには、gnome-terminal、xterm、Konsole、yakuake、そしておそらく忘れてしまったものもいくつかあり、さらに ctrl-alt-F1...ctrl-alt-F6 などに関連付けられた「仮想端末」もあります。これらのほとんどは、「xterm」の「標準」termcap エントリで動作しますが、「linux」という名前の端末定義を持つ仮想端末は除きます。
ターミナル エミュレーター自体と、動作するターミナルと動作しないターミナルの $TERM の値をチェックして、何が違うのかを確認します。また、別のユーザーとしてログインしている場合、それが問題の核心である可能性があります。各ユーザーには独自の .bashrc があるため、さまざまな設定がユーザーごとに異なる場合があります。
お役に立てれば幸いです!
-pbr