2009-03-10 4 views
4

私はしばしばviで作業し、viを一時停止し、cliで何かを実行してから、fgでviに戻って結果を処理します。たとえば、cliコマンドを実行したときに表示されるエラーを修正します。viを開いたときにviを「前進させる」ことができますか?

しかし、私がfg viを実行すると、viは現在のターミナルバッファを "ワイプ"し、スクロールバックバッファ内のターミナル出力の "最後のスクリーンフル"を見ることができません。

ここで私を助けるいくつかの設定がvi(またはscreen、私は画面を使用していますか?)ですか?

私は答えなしで長い間Googleを検索しました。私はまた、この問題を解決する他のワークフローがあることを認識していますが、完全ではありません(vi内から実行すると、シェルの完了などはありません)。

答えて

0

それは画面はCtrl +EまたははCtrl +Yをスクロールするだけでなく、トリックを行う可能性があることも可能です。

0

ANSIにあなたの端末タイプを変更すると、仕事ができる:

:set term=ansi 

をしかし、私はいくつかのマイナスの副作用があることを確認しています。

+0

「画面」で実行している場合はありません。すべてのcursesスタイルのTTY出力をインターセプトし、出力を再配列します。 – Alnitak

+0

あなたが書いたことをすれば、それはまったく役に立たない。 viを呼び出す前に**設定すると、たとえば、 'vim -T ansiが他のオプションを指定している 'とすると、問題は部分的に解決されます(部分的に私の答えと同じ意味です:http://stackoverflow.com/questions/630519/can-you-make -vi-advance-the-opened-screen /開いたとき/ 1783816#1783816)。しかし、いくつかの機能が障害になるので(例えば、構文強調表示) – Davide

8

screenを使用している場合は、1つのウィンドウで編集を行い、もう1つはコンパイルしてから、^A[n]シーケンスを使用して端末出力とコード画面を切り替えます。

+0

私は同意するので、治癒は問題よりも最悪です。 もう1つの方法は、画面を分割することです。画面を一度に表示し、その間に^ A を表示します。 – Andy

+1

Vimの場合、:makeコマンドは非常に便利です(特にキー[組み合わせ]にバインドされている場合)。 – strager

+0

アイデアをありがとう、しかし、私は元の投稿で言ったように、私の心はすでに "サスペンド・ランfg"の作業スタイルに条件付けられているので、とにかく特定のシナリオではそれを好む。私は別のワークフローを伴わない答えを探しています。とにかく用語を制御する方法も知りたい。 – apinstein

1

これが役立つかどうかわかりませんが、私は最近Macを使いますが、NetBSDとLinuxをuniで使っていました。 lessmanviなどのプログラムでは、終了時に画面が消去されることが常に盗まれていました。私はlessのスイッチを-Xオプションでオフにすることができましたが、それは他のオプションと(文字通り)オプションではありませんでした。

xtermの設定が問題を解決しました。私はオプションを覚えていないのが怖いです。メニューの1つで利用可能でしたが、私は-xrwコマンドラインオプションを通して考えています。

明らかに、これはxtermを使用する場合にのみ役立ちます。

+0

Macでは、この問題を解決するためにTERMをdttermに設定しました。私は彼が同じことをしたいと思うが、画面では、私が使っていないものを使う。 –

+0

うーん、興味深い。ありがとう! –

+0

あなたはxtermについて話していますか? Hardy Hardonのもの - つまり、XTerm(229)は '-xrw'を受け入れません。さらに、 'less-X'はAIX上の問題を解決しません。 – Davide

2

これはあなたの助けになるかどうかはわかりませんが、vimは起動時に見つかった画面を復元しようとします。私はその動作が好きで、これが動作しなかったマシンでvimのインストールを "修復"するのにかなりの時間を費やしました。

t_tit_teという変数を設定する必要がありました。私の感想は、あなたがt_teを解除するべきだということです。

+0

彼はVimではなくプレーンなviを使っていると思う。 – strager

+0

私は、質問が 'vim'とタグ付けされて以来、私は思った... – innaM

+0

私はvimを使用しています。 (エイリアスvi = vim、質問に混乱のために申し訳ありません)。 このアプローチは本当に面白そうです...私はこれらの2つの項目の助けを見ましたが、それは私の輪屋の外です... 私は率直に言えば、あなたは私が使うことを提案しますか? – apinstein

1

this answerについてのご意見は、実際にはt_tiのようです。

set t_ti="" 

をあなたは:プロンプトでそのコマンドを入力することにより、vimの中から最初にそれを試してみることができますという行を追加するには、~/.vimrcで。

+0

これは私のセットアップ(vim 7.0、AIX 5.3、$ TERMはaixtermに設定されています.vimrc以外のものを変更する方法はありません)ではまったく効果がありません。参照:http://stackoverflow.com/questions/1780483/lines-and-columns-environmental-variables-lost-in-a-script – Davide

0

これは解決策ではありませんが、私が使い始めたばかりの回避策です。vim-wrapper

alias vi='~/bin/vim-wrapper' 

内容(詳細はthis answerを参照してください):

#!/bin/bash 
LINES=$(tput lines) 
for i in `seq 1 $LINES`; do 
    echo $i 
done 
vim [email protected] 
ようなものでviのために、次のラッパースクリプトを作成します(私は〜/ binに/ vimのラッパーでそれを配置)し、おそらくそれエイリアス

これは、の問題を完全に解決するの問題です。残念なことに、それはではないを解決するは、vimで長いファイルを編集するときにかなり多くをスクロールする必要があります。しかし、あなたがxtermのような十分なバッファを設定した場合(私はgnome terminal 2.22.1を使います)、あなたは大丈夫でしょう。

関連する問題