
テキストエディタは、プレーンテキストを編集するコンピュータプログラムの一種です。このようなプログラムの例としては、「メモ帳」(例:Windows Notepad)があります。[1] [2] [3]テキストエディタはオペレーティングシステムやソフトウェア開発パッケージに付属しており、設定ファイル、ドキュメントファイル、プログラミング言語のソースコードなどのファイルを編集するために使用できます。[4]
プレーン テキスト(テキスト エディターで作成および編集されるテキスト) とリッチ テキスト(ワード プロセッサやデスクトップ パブリッシング ソフトウェアで作成されるテキストなど) には重要な違いがあります。
プレーン テキストは、文字表現のみで構成されます。各文字は、 ASCII 、 ISO/IEC 2022 、シフト JIS 、 UTF-8 、 UTF-16 などの特定の文字エンコード規則に従って、1 バイト、2 バイト、4 バイトの固定長シーケンス、または 1 ~ 4 バイトの可変長シーケンスで表現されます。これらの規則では、多くの印刷可能文字が定義されていますが、スペース、改行、ページ区切りなど、テキストの流れを制御する非表示文字も定義されています。プレーン テキストには、使用されている文字エンコード規則さえも含め、テキスト自体に関するその他の情報は含まれていません。プレーン テキストはテキスト ファイルに保存されますが、テキスト ファイルはプレーン テキストのみを保存するわけではありません。コンピューターの初期の頃から、プレーン テキストは (かつては必要に迫られて、今では慣例的に) 一般に等幅フォントを使用して表示され、水平方向の位置合わせや段組みの書式設定には空白文字が使用されることがありました。
一方、リッチテキストには、メタデータ、文字書式設定データ(書体、サイズ、太さ、スタイルなど)、段落書式設定データ(インデント、配置、文字と単語の配置、行間または段落間のスペースなど)、ページ指定データ(サイズ、余白、読み方向など)が含まれる場合があります。リッチテキストは非常に複雑になる場合があります。リッチテキストは、バイナリ形式(DOCなど)、マークアップ言語に準拠したテキストファイル(RTFやHTMLなど)、または両方のハイブリッド形式(Office Open XMLなど)で保存できます。
テキスト エディターは、プレーン テキストまたはプレーン テキストとして解釈できるもの (リッチ テキストのマークアップやその他のマークアップ (例: SVG )) を含むテキスト ファイルを開いたり保存したりすることを目的としています。

テキストエディタが存在する以前は、コンピュータテキストはキーパンチマシンでカードに打ち抜かれていました。[5]これらの薄いボール紙製のカードが箱に詰められ、カードリーダーに挿入されました。このようなカードデッキから作成された磁気テープ、ドラム、ディスクカードのイメージファイルには、多くの場合、行区切り文字がまったくなく、固定長[a] 80または90文字[6]レコードを想定していました。[7]カードの代替としてパンチテープがありました。これは、レコードの終了を示すために特殊文字を使用したテレタイプなどの一部のテレプリンタで作成できました。 [8]初期のオペレーティングシステムには、言語プロセッサに統合されているか、独立したユーティリティプログラムとして、バッチテキストエディタが含まれていました。1つの初期の例としては、 SHAREオペレーティングシステムでSCAT [9]のSQUOZEソースファイルを編集する機能があります。
最初の対話型テキストエディタは、テレタイプ向けの「ラインエディタ」でした。テレタイプとは、照明付きのディスプレイを持たない、入力と出力の両方を同じロール紙に機械的に印刷する、テレプリンタ型またはタイプライター型の端末です。コマンド(多くの場合、1回のキーストローク)は、ファイル内の挿入ポイント(オペレータは「カーソル」と呼ばれる)で編集を実行します。編集内容は、ファイルの一部を出力するコマンドを入力し、定期的にファイル全体を出力することで確認されました。一部のラインエディタでは、ファイル内の行番号、検索対象となる文字列(コンテキスト)、そして最終的には正規表現を指定するコマンドでカーソルを移動できました。ラインエディタはキーパンチ入力を大幅に改良したものです。一部のラインエディタはキーパンチで使用でき、編集コマンドをカードから取り出し、指定したファイルに適用できました。一般的なラインエディタの中には、「確認」モードをサポートし、変更コマンドで変更された行を表示するものもありました。
1975 年頃の構成例としては、テレタイプ モデル 33 を、バージョン 6 Unixを使用するPDP-11のコンソールとして使用し、標準のUNIXテキスト エディタであるedを使用してテキストを操作するというものがあります。
ビデオ画面を備えたコンピュータ端末が利用可能になると、画面ベースのテキストエディタ(単に「スクリーンエディタ」と呼ばれることもある)フルスクリーンエディタが一般的になった。最も初期のフルスクリーンエディタの一つはO26で、1967年にCDC 6000シリーズのコンピュータのオペレータコンソール用に書かれた。もう一つの初期のフルスクリーンエディタはviである。1970年代に書かれたviは、今でもUnixおよびLinuxオペレーティングシステムの標準エディタである[10]。同じく1970年代にはUCSD Pascalスクリーン指向エディタが書かれ、インデントされたソースコードと一般的なテキストの両方に最適化されていた。[11]最初のフリーでオープンソースのソフトウェアプロジェクトの1つであるEmacsは、もう1つの初期のフルスクリーンまたはリアルタイムエディタであり、多くのシステムに移植された。 [12] 1977年のCommodore PETは、フルスクリーンエディタを搭載した最初の量産コンピュータだった。フルスクリーンエディタの使いやすさと速度(行ベースエディタと比較して)は、ビデオ端末の初期の購入者の動機となった。[13]
テキストエディタのコアとなるデータ構造は、編集中のファイルの現在の状態を表す文字列(文字のシーケンス)またはレコードのリストを管理するものです。前者は単一の長い連続した文字配列に格納できますが、テキストの挿入、削除、以前の編集の元に戻す/やり直しをより迅速に実行できるテキストエディタへの要望から、より複雑なシーケンスデータ構造が開発されました。[14] 一般的なテキストエディタは、ギャップバッファ、行のリンクリスト( PaperClipなど)、ピーステーブル、またはロープをシーケンスデータ構造として使用します。


テキスト エディターには、小さくてシンプルなものもありますが、幅広く複雑な機能を提供するものもあります。たとえば、Unixおよび Unix 系オペレーティング システムにはpicoエディター (またはその派生) がありますが、viエディターや Emacs エディターも含まれているものが多くあります。Microsoft WindowsシステムにはシンプルなNotepadが付属していますが、多くの人 (特にプログラマー) は、より機能の多い他のエディターを好みます。Apple Macintoshのクラシック Mac OSでは、ネイティブのTeachTextがありましたが、1994 年にSimpleTextに置き換えられ、 Mac OS XではTextEditに置き換えられました。TextEdit は、テキスト エディターの機能と、ルーラー、余白、複数フォントの選択などの一般的なワード プロセッサーの機能を組み合わせています。これらの機能は同時に使用できず、ユーザー コマンドで切り替えるか、プログラムがファイル タイプを自動的に判別することによって切り替える必要があります。
ほとんどのワードプロセッサはプレーンテキスト形式のファイルを読み書きできるため、テキストエディタで保存したファイルを開くことができます。ただし、これらのファイルをワードプロセッサから保存するには、ファイルがプレーンテキスト形式で記述されていること、およびテキストエンコードやBOM設定によってファイルが本来の用途で不都合が生じないことを保証する必要があります。WordStarなどの非WYSIWYGワードプロセッサは、テキストエディタとして簡単に利用でき、実際1980年代にはテキストエディタとしてよく使用されていました。これらのワードプロセッサのデフォルトのファイル形式は、多くの場合マークアップ言語に似ており、基本形式はプレーンテキストで、視覚的な書式設定は非表示の制御文字またはエスケープシーケンスを使用して実現されています。Microsoft Wordなどの後発のワードプロセッサは、ファイルをバイナリ形式で保存するため、プレーンテキストファイルの編集にはほとんど使用されません。[15]
一部のテキストエディタは、ログファイルやデータベース全体を1つのファイルにまとめたような、非常に大きなファイルを編集できます。よりシンプルなテキストエディタは、ファイルをコンピュータのメインメモリに読み込むだけの場合もあります。しかし、ファイルサイズが大きい場合、この処理には時間がかかり、ファイル全体が収まらない場合があります。一部のテキストエディタでは、読み込みが完了するまで編集を開始できません。また、編集に特化したエディタでは、キー入力やナビゲーションコマンドへの応答に数秒、あるいは数分かかるなど、編集パフォーマンスが低下することがよくあります。専用のエディタでは、大きなファイルの表示部分のみをメモリに保存するなどの最適化が行われており、編集パフォーマンスが向上しています。
一部のエディタはプログラム可能であり、例えば特定の用途に合わせてカスタマイズできます。プログラム可能なエディタを使えば、反復的なタスクの自動化や新機能の追加、さらにはエディタのフレームワーク内での新しいアプリケーションの実装も容易です。カスタマイズの一般的な動機の一つは、ユーザーが使い慣れている別のテキストエディタのコマンドをテキストエディタで使用できるようにする、あるいはユーザーが依存している不足している機能を再現できるようにすることです。ソフトウェア開発者は、使用しているプログラミング言語や開発環境に合わせてエディタをカスタマイズすることがよくあります。一部のテキストエディタのプログラム可能性は、プログラムのコア編集機能の強化に限定されていますが、Emacsはテキストファイルの編集をはるかに超えて、Webブラウジング、メールの閲覧、オンラインチャット、ファイル管理、ゲームなどにも拡張でき、テキストユーザーインターフェースを備えたLisp実行環境と考えられることがよくあります。Emacsは、 Unix文化における伝統的なエディタ戦争のライバルであるViをエミュレートするようにプログラムすることさえ可能です。[16] [17]
プログラマブルエディタの重要なグループでは、スクリプト言語としてREXX [b]を使用しています。これらの「オーソドックスなエディタ」には、コマンドやマクロを入力できる「コマンドライン」と、行コマンド[c]やマクロを入力できるテキスト行が含まれています。このようなエディタのほとんどは、ISPF/PDF EDITまたはVM/SPからz/VMまでのIBMの主力エディタであるXEDITの派生です。THE 、KEDIT、X2、Uni-edit、SEDITなどがその例です。
特定の用途向けに作成またはカスタマイズされたテキスト エディターは、ユーザーが編集している内容を判断し、プログラミング用語を補完したり、関連ドキュメントのツールヒントを表示したりして、ユーザーを支援できます。ソフトウェア開発者向けの多くのテキスト エディターには、プログラムの読み書きを容易にするために、ソース コードの構文の強調表示や自動インデント機能が含まれています。プログラミング エディターでは、多くの場合、ユーザーがインクルード ファイル、関数、または変数の名前を選択して、その定義にジャンプできます。また、最初のカーソル位置を保存したり、要求された定義をポップアップ ウィンドウまたは一時バッファーに表示したりすることで、元のコード セクションに簡単に戻れるようにするエディターもあります。エディター自体にこの機能を実装しているものもありますが、定義を見つけるために ctagsなどの補助ユーティリティが使用されることがよくあります。
一部のエディタには特別な機能や追加機能が含まれています。例えば、
プログラム可能なエディターは通常、これらの機能の一部またはすべてを実行するように拡張できますが、よりシンプルなエディターは 1 つの機能だけに焦点を当てているか、gPHPeditのように単一のプログラミング言語を対象としています。
すべてのオペレーティングシステムにはデフォルトで基本的なテキストエディターが付属していますが、ほとんどの人はより多くの機能を利用するために独自の拡張テキストエディターをインストールしています。
ユーザーの中には、これらの端末を購入し、「ガラステレタイプ」として、あるいは「ローカル編集」として利用した人もいました。
ファイルをテキストエディターで開くと、ファイルの大部分が書式設定コードであることに気づくでしょう。しかし、テキストエディターは書式設定コードを追加しないため、コードのコンパイルが容易になります。