終了後にvimスクリーンバッファーを以前のbashアクティビティに置き換える方法


14

私はbash(またはvim)機能が何であるかを見つけようとしています。これがシナリオです。私はbashターミナルにいて、vimで何かを編集してからbashに戻ります。一部の端末では、vimセッション画面が非表示になり、以前のbashシェルアクティビティが表示されます(これが必要ですか?)。

その他では、vimセッション画面バッファーが残ります(古いbashシェルアクティビティを非表示にします)。画面をクリアするか、bashアクティビティがそのvimセッションバッファーを画面から押し出すまで待つ必要があります。

vimセッションバッファを以前のbashアクティビティに置き換えるために、この動作をどのように制御できますか?

ありがとうティム


superuser.com/questions/871170は関連しています。
JdeBP 2015年

回答:


10

Vimは送信t_tiしてt_ks端末にセッションが開始されたときt_tet_ke、それが終了したとき。t_tiそしてt_te、端末原因のシーケンスは、その代替画面に切り替えます。

~/.vimrcファイルにvim、次の行を含めることにより、終了時に画面上にドキュメントを残すことができます。

set t_ti=""

それに似た行がある場合、それを削除すると、終了時に以前の端末の内容が表示されますvim


4

この問題の原因は、プログラムを使用している可能性がありますscreenscreenセッション中にvimが端末の状態を返すことができないことがわかりました。

Ubuntu 15.10のスクリーンに固有なのか、screen / vimコンボに固有なのかはわかりません。上記と同じ原因、screentermcapが異なると思います。


2
altscreen on〜/ .screenrcファイルに追加すると、screenの問題が解決します。
BartBiczBoży

3

~/.bash_profileファイルに1行追加するだけで、ログインするたびにTERMをxtermとしてエクスポートできます。次のようにします。

echo "TERM=xterm; export TERM" >> ~/.bash_profile

これで次回ログインしたときに問題が修正され、再ログインしたくない場合は次のいずれかを実行できます...

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile

1
そうではないでしょうexport $TERMか?
chrsblck 14

1
@chrsblck:いいえ。export名前(TERMこの場合など)をローカル変数ではなく環境変数としてエクスポートするためです。export $TERMこの例で使用した場合、変数はenv varを設定$TERMすると解決しxtermますが$xterm、これはおそらく定義されていません。良い質問ですが、それは私にとっても常に間違っているようです。
ekerner

2

ティム。上記の答えは両方とも正しいです。それを行う機能が$ TERMのtermcapエントリで定義されている場合、Vimは端末を「代替画面」に切り替えます。

「一部の端末では(...正しく動作します...)」および「他の端末では(...正しく動作しません...)」と言います。

これらのすべての端末でまったく同じ端末エミュレータを実行していますか?

たとえば、自宅のLinuxボックスには、gnome-terminal、xterm、Konsole、yakuake、そしておそらく忘れてしまったものがいくつかあり、ctrl-alt-F1に関連付けられた「仮想端末」もあります... ctrl-alt-F6程度。これらのほとんどは、「xterm」の「標準」termcapエントリで動作します-「linux」という名前の端末定義を持つ仮想端末を除きます。

端末エミュレーター自体と、動作する端末と動作しない端末の$ TERMの値を確認して、違いを確認します。また、別のユーザーとしてログインしている場合もありますが、これは問題の中心になります。各ユーザーが独自の.bashrcを持っているため、ユーザーごとにさまざまな設定が異なる場合があります。

お役に立てば幸いです!
-pbr


1

これは、端末と端末情報を処理するマシンの設定に関係しています。移植可能なソリューションの1つは、GNU Screenを使用することです。Vim用とBash用に別のウィンドウを開き、2つのセッションを分離します。X11のxterm、GnomeのGnomeターミナル、またはOS XのTerminal.appなどのグラフィカルターミナルを使用している場合は、新しいウィンドウまたはタブを開いて同じ効果を得ることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.