知識ベース

TextMate

TextMateは、Allan Odgaardによって作成されたmacOS用の汎用GUIテキストエディターです。 TextMateは、宣言的なカスタマイズ、開いているドキュメントのタブ、記録可能なマクロ、折りたたみセクション、スニペット、シェル統合、および拡張可能なバンドルシステムを備えています。

歴史

TextMate 1.0は2004年10月5日にリリースされ、5か月の開発の後、2004年10月21日にバージョン1.0.1が続きました。このリリースは小さな機能セットの実装に焦点を当てており、設定ウィンドウやツールバーがなく、 t FTPを統合し、印刷のオプションがありませんでした。少数の「言語バンドル」のみが作成されていたため、最初は少数のプログラミング言語のみがサポートされていました。それでも、一部の開発者は、この初期の不完全なバージョンのTextMateが、BBEditの10年にわたる優位性によって停滞していると考えられていた市場への歓迎すべき変化であると感じました。

TextMate 1.0.2は2004年12月10日にリリースされました。一連のTextMate 1.1ベータ版で、TextMateには次の機能が追加されました。テーマを作成および編集するためのGUIを備えた設定ウィンドウ。シンボルリストのあるステータスバー。言語とタブの設定を選択するためのメニュー、および言語固有のカスタマイズを編集するための「バンドルエディター」。 2006年1月6日、Odgaardは1.0.2以来の最初の「安定版リリース」であるTextMate 1.5をリリースしました。批判されていた以前のバージョンとは対照的に、レビューは好意的でした。

TextMateは、2006年半ばまで開発を続けました。 2006年8月8日に、TextMateは、カリフォルニア州サンフランシスコで開催されたAppleのWorldwide Developers Conferenceで、「騒々しい拍手”」を授与され、Best Developer ToolのApple Design Awardを受賞しました。 FTPなどのリモートファイルシステムやSubversionなどのリビジョン管理システムをサポートするプラグインシステムを使用した管理。 2007年を通じて、コアアプリケーションの変更は最小限にとどまりましたが、その「言語バンドル」は進歩し続けました。

2009年6月、TextMate 2は約90%完了したと発表されましたが、最終機能リストは未公開です。公開アルファ版は、2011年12月にTextMateブログでダウンロードできるようになり、2016年末にリリース候補版がリリースされました。2019年9月に、最終バージョンがリリースされました。

2012年8月、TextMate 2のソースコードは、GNU General Public Licenseのバージョン3の条件でGitHubに公開されました。これは、AppleがMac App Storeを通じて配布されるソフトウェアに課した制限に対抗するための開発者による試みです。ただし、TextMateライセンスはmacromates.comで引き続き販売されます。 Odgaardは、より寛容なライセンスで将来のバージョンをリリースしたり、Mac App Storeでバージョンを公開したりする能力を維持するため、パッチをパブリックドメインとして受け取ることを好むと述べました。 Odgaardはまた、クローズドソースプロジェクトでTextMateのフレームワークの一部を使用する友人がおり、GPLでリリースされたパッチを組み込むことができないと述べました。

特徴

階層スコープ

TextMateを使用すると、ユーザーはApple ASCIIプロパティリスト形式の修正バージョンを使用して言語文法を定義することにより、独自の任意に複雑な構文強調モードを作成できます。これらの文法を使用すると、鬼車の正規表現ライブラリを使用してネスト規則を定義し、特定の「スコープ」、つまり色付けのためにそれらを識別する複合ラベルを割り当てることができます。

したがって、ドキュメントの各ポイントには1つ以上のスコープが割り当てられ、ドキュメント内のどこにあるか、どのように色付けするか、そのポイントでのTextMateの動作を定義します。たとえば、「外部リンク」セクションのリンクの1つのタイトルのスコープは次のとおりです。

text.html.mediawiki markup.list.mediawiki meta.link.inline.external.mediawiki string.other.link.title.external.mediawiki

このスコープは、MediaWikiドキュメント内のリスト内のリンク内のリンクタイトルを見ていることを示しています。

TextMateテーマは、さまざまな精度レベルで任意のスコープをマークアップできます。たとえば、あるテーマはすべての定数(constant。*)を同じ色にすることを決定し、別のテーマは数値定数(constant.numeric。*)をエスケープ文字(constant.character.escape。*)とは異なる色にすることを決定します。階層スコープの構文により、言語作成者とテーマ作成者はさまざまなレベルのカバレッジを使用できるため、必要に応じて各ユーザーが単純さまたは包括性を選択できます。

コマンド

TextMateは、bashまたはshebangで指定されたインタープリターによって解釈されるユーザー定義およびユーザー編集可能なコマンドをサポートします。コマンドは、環境変数に加えて、TextMateによってさまざまな種類の入力(現在のドキュメント、選択されたテキスト、現在の単語など)を送信でき、その出力はTextMateによってさまざまな方法で同様に処理できます。最も単純な場合、コマンドは選択されたテキストを受け取り、それを変換し、文書に再挿入して選択を置き換えます。他のコマンドでは、単にツールヒントを表示したり、出力用の新しいドキュメントを作成したり、TextMateの組み込みHTMLレンダラーを使用してWebページとして表示したりできます。

bash、PHP、Rubyなどの多くの言語固有のバンドルには、現在のドキュメントまたはプロジェクトをコンパイルまたは実行するためのコマンドが含まれています。多くの場合、コードのプロセスのSTDOUTとSTDERRはTextMateのウィンドウに表示されます。

スニペット

最も簡単なTextMateの「スニペット」は、コンテキスト依存のキーストロークまたはタブ補完を介して現在の場所のドキュメントに挿入できるテキストです。スニペットは「インテリジェント」で、「タブストップ」の動的更新、環境変数へのアクセス、およびインラインスクリプトを実行する機能をサポートしています。これにより、複雑な動作が可能になります。 「タブ」キーを使用してタブストップを循環させ、デフォルトのテキスト、ドロップダウンをサポートして、スニペットの要素を完成させることができます。これらのタブストップの結果は、ユーザーがストップに入力するときに、スニペットの別の部分で動的に変更できます。 TextMate環境変数を使用して、現在のスコープ、行番号、作成者名などに関する情報をサポートできます。スニペットには、インラインシェルスクリプトを実行する機能もあります。

バンドル

TextMate言語の文法、スニペット、マクロ、コマンド、およびテンプレートは、機能の「バンドル」にグループ化できます。スニペット、マクロ、またはコマンドは、キーボードショートカットを押すか、特定の単語を入力してから「タブ」キー(いわゆる「タブトリガー」)を押すか、メニューからコマンドを選択することで実行できます。タブトリガーは特に便利です。タブトリガーとスニペットの組み合わせにより、冗長言語、または一般的に入力されるパターンを持つ言語でのコーディングが大幅に容易になります。

スニペット、マクロ、およびコマンドは特定のスコープに限定できるため、たとえば「htmlタグを閉じる」コマンドはpythonスクリプトでは機能せず、そのキーボードショートカットを他の目的に使用できるように解放します。これにより、個々の言語、さらに個々のスコープでさえも、「Reformat Paragraph」などの組み込みコマンドをより専門的なバージョンでオーバーライドできます。リターンキーやスペースバーなどの特別なキーでも上書きできます。

Markdownからブログ作成、MIPSアセンブリ言語まで、エディターパッケージに同梱されているよりも多くのバンドルを含むSubversionリポジトリが利用可能です。

プロジェクト管理

TextMateプロジェクトウィンドウで複数のドキュメントまたはフォルダーを一度に開くことができます。このウィンドウには、ファイル名とフォルダー名を一覧表示する引き出しがあり、上部に一連のタブがあります。 TextMate 1.5では、この引き出しは、ユーザーがファイルシステム全体からファイルとフォルダーを整理する手段を提供し、さらに整理するための仮想フォルダーを作成する機能を提供します。この機能はTextMate 2から削除され、通常のファイルブラウザーに置き換えられました。検索と置換はプロジェクト全体で実行でき、コマンドはドロワーで選択したファイルまたはフォルダーと対話できます。 CVS、Subversion、darcs、およびその他のリビジョン管理システムのバンドルにより、TextMateはバージョン管理されたコードを管理できます。

その他の機能

TextMateには、プログラミングエディターに共通する多くの機能があります。

  • 折り畳み式のコードセクションを使用すると、現在編集されていないドキュメントの領域を非表示にしたり、コード構造をよりコンパクトに表示したり、混乱を避けることができます。折りたたむセクションは手動で選択するか、ドキュメント自体の構造を使用して折り畳みを決定できます。
  • 正規表現ベースの検索と置換は、複雑なテキスト操作を高速化します。 TextMateは、K。Kosakoが開発した鬼車正規表現ライブラリを使用します。
  • 関数ポップアップは、現在のドキュメント内のセクションまたは関数のリストを提供します。
  • クリップボード履歴を使用すると、ユーザーはテキストの多くのセクションを一度に切り取って貼り付けることができます。
  • 列編集モードでは、同じテキストを複数のテキスト行に追加でき、表形式のデータを操作するのに非常に便利です。
  • リモートサーバーからのファイルのエディターとしてtextmateを起動するための「rmate」サポート-バージョン1で必要な回避策よりも大幅に改善

さらに、TextMateはOS Xグラフィカル環境とうまく統合する機能をサポートしています。

  • クリップボードのグラフィカル履歴は、以前の起動を含む以前のコピーからの貼り付けをサポートします。
  • 類似のグラフィカル履歴の検索と置換のサポート。
  • 編集は、複数のカーソル(挿入ポイント)、および複数のカーソルを作成する追加のインスタンスに現在の選択を拡張する機能によってさらに強化されます。
  • WebKitベースのHTMLビューウィンドウには、HTMLドキュメントの編集中にライブアップデートが表示されます。
  • VoiceOverとZoomのユーザーは、アクセシビリティサポートのおかげでTextMateを使用できます。

制限事項

TextMateには、そのクラスの他のエディターと比較していくつかの制限があります。

  • EmacsはEmacs Lispであるため、TextMateはスクリプト言語と密接に結合していないため、ユーザーがプログラムの構成と動作を完全に制御することは不可能です。 Allan Odgaardは、TextMateメーリングリストへのメールでこのテーマに関する彼の考えを説明し、「プラットフォームが推奨する」ソリューションを提唱しました。
  • 組み込みのHTMLバリデーターはありません— TextMateはHTML検証にW3Cバリデーターを使用するため、ユーザーは標準機能を使用してHTMLを検証するためにアクティブなネットワーク接続が必要です。
  • マクロ、コマンド、およびスニペットの実質的なサポートにもかかわらず、TextMateにはコードヒントまたはガイド付きコード補完のサポートが組み込まれていないため、これらの機能をサポートするテキストエディターは、新しい構文を学習する際により良い選択である可能性があります言語または冗長言語でのコーディング。
  • TextMateはバイナリセーフではありません。明示的にテキストのみであり、データが編集されているかどうかにかかわらず、ファイル内の任意のバイナリデータがロード/保存サイクルを通じて保持されることを保証しません。

コミュニティ

TextMateには、オープンソースTextMateバンドルのgitリポジトリに貢献するユーザーのコミュニティがあります。 TextMate wikiには、ヒントとヒント、機能の提案、および外部リソースへのリンクがあります。バグレポートと機能リクエストを提出するためのチケットシステムが存在し、通常はIRCチャネル(#textmate connect)がアクティブです。

TextMateバンドルは、多数のプログラミング言語で記述されたコードをサポートするために存在します。 RubyおよびRuby on Railsバンドルは、Ruby on Railsの作成者であるDavid Heinemeier Hanssonによってサポートされています。

受賞歴

TextMate 1.5は、2006年に最優秀開発者ツールとしてApple Design Awardを受賞しました。