vimとうまく動作するスクリプトバージョンはありますか?

vimとうまく動作するスクリプトバージョンはありますか?

man script説明する:

vi(1) などの一部の対話型コマンドは、TypeScript ファイルにガベージを作成します。スクリプトは画面を操作しないコマンドに最も適しており、結果はハードコピー端末をシミュレートするためのものです。

スクリプトセッションを開始してvimを実行してみましたが、出力に制御文字があるようです。scriptreplay完了後にタイプスクリプトを再生すると、コマンドラインにいくつかの制御文字が残ります。

しかしそうだった最大これは、分割ウィンドウを使用してvimセッションを正しくキャプチャする場合にも機能します。不良キャラを操るのは根本的な問題というよりは些細な面倒なことのようです。それでは、scriptこれらの迷惑なしに動作する同様のプログラムはありますか?

ベストアンサー1

短い:おそらくそうではありません。

長い:

まず、マニュアルページのコメントでは、scriptそのテキストをインポートして画面に元の表示を表示するテキスト専用(制御文字なし)バージョンを作成する方法について説明します。このscriptreplayツールは、プレーンテキストファイルを生成せずに映画のようにテキストを再生する回避策です。

typescript保存されたファイルはscriptvimなどのフルスクリーンテキストエディタを使用するため、プレーンテキストファイルに変換するのは困難です。カーソルのアドレス指定。変更があるたびに画面全体を再描画するのではなく(原則として一連の画面を見ることができます)、vimは画面の周りにカーソルを移動して変更します。

スクロールを含めて変更しないと、コントロールがほとんどないシンプルな画面が得られます。しかし、問題はその特別なケースについて尋ねることではありません。

vimにカーソルのアドレス指定なしで端末記述を使用させることができる場合(カーソルを移動するのではなく)、強制的に再描画する必要があるかもしれません。しかし、vimは組み込み通常、端末データベースを無視する端末の説明(参照パスワード)。たとえば、ターミナルデータベースにカーソルdumbアドレッシングはありません。 vimバージョンにはカーソルアドレッシング機能があります。

/* 
 * The most minimal terminal: only clear screen and cursor positioning 
 * Always included. 
 */
    {(int)KS_NAME,      "dumb"},
    {(int)KS_CL,        "\014"},
#ifdef TERMINFO
    {(int)KS_CM,        IF_EB("\033[%i%p1%d;%p2%dH",
                                                  ESC_STR "[%i%p1%d;%p2%dH")},
#else
    {(int)KS_CM,        IF_EB("\033[%i%d;%dH", ESC_STR "[%i%d;%dH")},
#endif

したがって、カーソルを移動して画面を更新します。

端末にエコーされる制御文字は他の機能です。 vimはエスケープシーケンスを端末に送信します。xtermの場合は、バージョンが何であるかを尋ねます(vimの一部のオプション機能をオンにします)。これは標準VT100エスケープシーケンスです(デバイス属性DA)、多くの端末(xtermを除く)は文字をコンピュータに送信して応答し、コマンドラインに残ります。

おすすめ記事