私はプログラミングに関してかなりの初心者ですが、vim、emacs、nano などのシェル テキスト エディターがコマンド ライン ウィンドウをどのように制御できるのか疑問に思っていました。私は主に Windows プログラマーなので、*nix では異なるかもしれません。私の知る限り、テキストをコンソールに出力して入力を求めることしかできません。テキスト エディタは、コマンド ライン環境でナビゲート可能で編集可能なウィンドウをどのように作成しますか?
8 に答える
次に、エスケープ文字シーケンスを使用する次のようなライブラリを使用することによって
名前 ncurses - CRT 画面処理および最適化パッケージ あらすじ #含む 説明 ncurses ライブラリ ルーチンにより、ユーザーは端末に依存しない 合理的な最適化でキャラクター画面を更新する方法。これ 実装は「新しいcurses」(ncurses)であり、承認された代替品です 廃止された 4.4BSD のクラシックな curses 用。 [...をちょきちょきと切る....] ncurses パッケージがサポートするもの: 画面全体、ウィンドウ、およびパッド 操作; ウィンドウとパッドへの出力。端末入力の読み取り; コントロール 端末を介して入力および出力オプションを呪います。環境クエリ ルーチン; 色操作; ソフト ラベル キーの使用。terminfo 機能; 低レベルの端末操作ルーチンへのアクセス。
簡単な答え: ライブラリがあります (curses、slang など)。
より長い答え: カーソルでジャンプしたり、色を変更したりすることは、特殊文字シーケンス (ESC 文字で始まるため、エスケープ シーケンスと呼ばれます) を出力することによって行われます。
ncursesについて学ぶことは、良い出発点かもしれません。
「VT100」端末に基づく vt100 と呼ばれる古いプロトコルがあります。エスケープで始まるコードを使用して、カーソルの位置、色、画面のクリアなどを制御していました。
また、色付きのプロンプトを取得する方法でもあります。
Google VT100 または「ターミナル エスケープ コード」
編集:私はあなたのためにそれをグーグルで検索しました:http://www.termsys.demon.co.uk/vtansi.htm
これは、Windows コマンド ライン コンソールで「edit」と入力してもわかります。この「機能」は UNIX ライクなシステムに固有のものではありませんが、Windows コンソールをそのように操作するための概念は UNIX とはまったく異なります。
Unix システムでは、コンソール ウィンドウは古代のシリアル ターミナル (通常はVT100 ) をエミュレートします。特殊な制御文字とエスケープ シーケンスを印刷して、カーソルを移動したり、色を変更したり、その他の特殊効果を実行したりできます。詳細を処理するのに役立つライブラリがあります。ncursesが最も人気があります。
Windows では、[Win32 コンソール API]( http://msdn.microsoft.com/en-us/library/ms682073(VS.85%29.aspx)が同様の機能を提供しますが、方法はかなり異なります。
コマンド ラインで「c:\winnt\system32\edit」または「c:\windows\system32\edit」と入力すると、コマンド ライン テキスト エディターが表示されます。
コマンド画面を制御するために使用されている ESC 文字については、ほとんどの人が正しいですが、一部の古いプログラムでは、Windows コマンド ライン画面で使用されるメモリ スペースに文字を直接書き込むこともあります。
コマンド ライン ウィンドウを制御するには、独自のウィンドウ フォーム、エントリ ボックス、メニューなどを作成する必要がありました。また、イベントを処理するために、それらすべてを大きなループにまとめる必要がありました。
より Windows コマンド ライン固有のアプリは、通常、同じことを行う DOS または BIOS 機能を呼び出します。ANSI コマンド コードのサポートが利用できる場合と利用できない場合があります (正確な MS OS のバージョンと、それをロードするように構成されているかどうかによって異なります)。