Vimが端末で実行されているプログラムの場合、GUIはどのように実装されますか?

Vimが端末で実行されているプログラムの場合、GUIはどのように実装されますか?

端末内で実行され、GUIを持つVim(またはtopなど)などのプログラムを実装する方法を理解していません。端末が文字のみを表示できると仮定すると、Vimは複数のウィンドウを表示できるだけでなく、カーソルのすべての方向移動も処理できます。

別の例はLinuxです。トップ情報を表示するユーティリティリアルタイム更新されました。プログラムが情報を更新するのではなく、どのように情報を更新できますか?下にスクロール新しい印刷文字を表示しますか?

答え1

端末で実行されるアプリケーションには、次のものがあります。テキストユーザーインターフェイスは、ほとんどの端末が単純なもの以上であるため、愚かなターミナル文字のみを印刷して次の行に移動できますが、「スマート」端末ではサポートされています。制御文字そしてエスケープシーケンスその意味には、「現在の行をクリアして次の行を上にスクロール」、「(53,7)位置に移動」、「今から明るい赤で印刷する」などが含まれます。

ほとんどの端末エミュレータはほとんどを実装します。xtermのエスケープシーケンス、それ自体はほとんどの製品と互換性があります。VT100ハードウェア端末とそれに続く製品。アプリケーションは、通過するためにどのエスケープシーケンスを送信するかを知っています。用語キャップまたは用語情報データベース。バラよりキーボード入力とテキスト出力はどのように機能しますか?(「テキストモードアプリケーション、端末で実行」セクション)と$ TERMはどのように、どこで解釈されますか?詳細については。

Vimには、テキストユーザーインターフェースに加えて、GVimと呼ばれるグラフィカルユーザーインターフェースもあります。インターフェイスは、以下を実装するグラフィカル端末で実行されます。X11プロトコル、テキスト端末ではない(もちろん放射テキスト端末内でアプリケーションを実行すると、その端末には表示されません。

答え2

vimおそらくgvim、他のライブラリに関連付けられている別の実行可能ファイルかもしれません。実行可能ファイルに2つのインターフェースのいずれかを実行させることができます(例:elvisとemacsがこれを実行します)。 1996年、Vim 4.0には-gGUIバージョンを使用するオプションが追加されました(この場合は同じ実行ファイルの一部でした)。

私は4.0のプレゼンテーションのコピーを見つけることができませんでした(このオプションへの動機付けの手がかりを提供することができます-g(vimのプレゼンテーションメーリングリストは次から始まります)。1997年)、前のFAQでLaurent Dupervalが言及したものを参照してください。

7.3 How can I make Vim faster on a Unix station?

   The GUI support in Vim 4.0 can slow down the startup time noticeably.
   Until Vim supports dynamic loading, you can speed up the startup time
   by compiling two different versions of Vim: one with the GUI and one
   without the GUI and install both. Make sure you remove the link from
   $bindir/gvim to $bindir/vim when installing the GUI version, though.

   If screen updating is your problem, you can run Vim in screen. screen
   is an ascii terminal multiplexer. The latest version can be found at
   <URL:ftp://ftp.uni-erlangen.de:/pub/utilities/screen>.

私の記憶では、長い間2つの実行可能ファイルがあったということです。それ変更を適用するには、実際に使用されるパッケージに関する多くの研究が必要です。しかし、この機能は1996年から存在してきました。

すべてのタイプのインターフェイスのディスプレイを更新する方法はいくつかあります。 gvimの場合はXライブラリを使用しますがtop(またはvim) エスケープシーケンスを使用します。システムに応じて、これらの両方用語キャップアプリケーション、ncursesのtermcapインタフェースなどを使用してエスケープシーケンスを取得します(top実際には、使用表示用のncurses(例htop:)。 vimはこの機能を強化するために組み込みテーブル(しばしば重複)を使用します。

興味深いことに、Debianprocpsバージョンtopは(比較的まれです)用語情報これは、アプリケーションを確認するとわかります。ソースコード

答え3

もともとTTYに続いて端末が使用可能になり、プリンタをVDUに置き換えました。

VDUは紙文書と特性が若干異なります。単に重ねて印刷するのではなく、ディスプレイの文字を消去して置き換えることができます。

ASCII はデフォルトのラインプリンタに十分な制御文字を提供しますが、VDU を期待しません。その他の端末固有のコントロールは、「エスケープ文字」を使用してASCIIでエンコードされます。エスケープシーケンスはASCIIエスケープ文字で始まります。シーケンスの次の文字は、端末固有のコントロールとして解釈されます。

ビジュアルエディタは、viこの新しいテクノロジを使用するアプリケーションの良い例です。

エスケープコードセットが標準化されています。最新の文書が十分な場合は、「ANSIエスケープ」を含めることができます。索引

関連情報