プログラミング
Txt: エンジニア向けの高速キーボード駆動型ターミナルテキストエディタ
Txt: A fast, keyboard-driven terminal text editor for engineers (txt.hellman.io)
要約
Txtは、エンジニアがターミナル内で素早くテキスト編集を行うために設計された、高速でキーボード駆動型のターミナルテキストエディタです。設定や学習コストを最小限に抑え、直感的な操作感と予測可能な挙動を重視しており、IDEの代わりではなく、ちょっとした編集作業に最適なツールとして位置づけられています。シンタックスハイライト、コード折りたたみ、LSPサポート、Git連携など、開発に必要な機能も備えています。
全文翻訳
txt
エンジニア向けの高速キーボード駆動型ターミナルテキストエディタ。
インストール
GitHubで表示
最新リリース:
なぜtxtなのか
ほとんどのターミナルエディタでは、編集を開始する前にプラグインの設定、モーダルシステムの学習、あるいは数時間かかるセットアップとの格闘といった儀式が必要です。GUIエディタは逆の問題を抱えています。強力ですが、設定ファイルを編集したり、タイポを修正するためにマウスに手を伸ばすと、フローが途切れてしまいます。
私はほとんどの時間をターミナルで過ごしており、ちょっとした編集のために別のツールに切り替えるたびに、望まない摩擦を感じていました。ターミナル内に存在するエディタは、モーダルパラダイムを中心とした急峻な学習曲線を持っているか、あるいは実用には限界がありすぎます。
txtの設計原則はシンプルです。編集は思考のように感じられるべきです。エディタは即座に開き、キーストロークは予測可能で発見しやすく、カーソルは期待通りの場所に正確に着地します。モーダルの混乱もなく、必須の設定もなく、最初のファイルを開く前にナビゲートする必要のあるプラグインエコシステムもありません。
txtはあなたのメインIDEを置き換えることを目指していません。それは、何かを編集する必要があるときに手を伸ばすエディタであり、それをターミナル内で行いたい場合のためのものです。
機能
Rust、Python、JavaScript、TypeScript / TSX、Go、Java、Kotlin、C#、Groovy、Shell、HTML、CSS、JSON、YAML、TOML、Properties、Markdown(埋め込みコードブロックを含む)のためのtree-sitterによるシンタックスハイライト
コード折りたたみ — 折りたたみガターと▸ N linesマーカーを備えたtree-sitter駆動の折りたたみ。Ctrl+Shift+[で切り替え、Alt+0 / Alt+Shift+0で全て折りたたみ/展開。
現在のファイル内のシンボル — Ctrl+Shift+Oでバッファ内の全ての関数、クラス、宣言に対するファジーピッカーを開きます。
スティッキー スコープヘッダー — スクロール中に、エディタペインの上部に囲んでいる関数、クラス、またはモジュールが固定され、ステータスバーに薄いパンくずリストが表示されます。
Git統合 — 追加/変更/削除された行のインラインガター、ステータスバーの現在のブランチ、ステージング、コミット、プッシュ、プル用の組み込み操作ダイアログ(Ctrl+Shift+G)。
大規模プロジェクトでの高速ナビゲーションのためのファジーファイルピッカー
マルチカーソル編集 — Alt+Shift+Up/Downでカーソルを上下に追加します。
ASTを意識した選択 — 構文ツリーに沿って選択範囲を拡張・縮小します。
言語サーバープロトコル — 補完、ホバー情報、定義元ジャンプ、参照検索。LSPバイナリが起動される前に、初回使用時の信頼性確認プロンプトが表示されます(LSPサーバーの設定を参照)。
スニペット — TextMateスタイルのプレースホルダーとタブストップ。言語ごとに~/.config/txt/snippets/<lang>.tomlからロードされます。
キーボードマクロ — 編集シーケンスを名前付きスロットa–z(Ctrl+Shift+R)に記録し、単一のundoステップ内(Ctrl+Alt+R)で再生します。
マークとジャンプリスト — Ctrl+M、続いてa–zでワークスペース全体の名前付きマークを設定し、Ctrl+'で戻り、Alt+Left / Alt+Rightで履歴を移動します。全て<workspace>/.txt/の下に永続化されます。
コードフォーマット — 入力中にライブインデントルールが適用され、言語ごとに設定された外部ツール(rustfmt、prettierなど)によるワンキーストロークフォーマット。
.editorconfigサポート — ファイルごとのインデントスタイルと幅、改行コード、最終改行、末尾空白のトリミングが自動的に読み込まれます。
設定可能な列(例: rulers = [80, 120])でのインデントガイドとカラムルーラー。
正規表現と大文字/小文字を区別するモードでの検索と置換。
ファイルサイドバー(ファイル管理機能付き:作成、名前変更、削除、移動)。.gitおよびドットフォルダはデフォルトで非表示。マウスサポートも充実(クリックで開く、スクロールで閲覧、セパレータをドラッグしてリサイズ)。
マウスフレンドリーなエディタ — タブをクリックして切り替え、ダブルクリックで単語を選択、水平ホイールスクロール、カーソルを過ぎて自由に垂直スクロール(次の編集で元に戻ります)。
設定可能なキーバインディング — ~/.config/txt/keybindings.tomlをドロップするか、設定UIからVS CodeまたはIntelliJ IDEAのプリセットを選択します。
ファイル監視 — 外部ツールによって変更されたファイルを自動的にリロードします。
インストール
Homebrew (macOS and Linux)
brew tap ErikHellman/tap
brew install txt
後で brew upgrade txt でアップデートします。
macOS and Linux (curl)
curl -fsSL https://raw.githubusercontent.com/ErikHellman/txt/main/install.sh | sh
最新リリースのバイナリを~/.local/binにインストールします。そのディレクトリがPATHに含まれていることを確認してください。アップデートするには同じコマンドを再実行してください。
Windows
irm https://raw.githubusercontent.com/ErikHellman/txt/main/install.ps1 | iex
%LOCALAPPDATA%\txtにインストールし、PATHに自動的に追加します。
ソースからビルド
Rust 1.88以降が必要です。
git clone https://github.com/ErikHellman/txt.git
cd txt
cargo build --release
バイナリは./target/release/txtにあります。PATHのどこかにコピーしてください。
使い方
ファイルまたはディレクトリを開く:
txt file.txt
txt .
ディレクトリを開くと、ファイルサイドバーが自動的に表示されます。
いつでもF1キーを押すと、全てのキーバインディングのリストが表示されます。
キーバインディング
キー
アクション
Ctrl+S
ファイルを保存
Ctrl+Q
終了
Ctrl+P
ファジーファイルピッカー
Ctrl+Shift+O
現在のファイル内のシンボル
Ctrl+Shift+P
コマンドパレット
Ctrl+F
検索
Ctrl+H
検索と置換
Ctrl+W
選択範囲を囲むASTノードまで拡張
Ctrl+Shift+W
選択範囲を縮小
Ctrl+Shift+[
カーソル位置のコード折りたたみ切り替え
Alt+Shift+Up/Down
カーソルを上/下に追加
Alt+M
対応するブラケットにジャンプ
Alt+L
ビューポートをカーソル位置にセンタリング
Alt+Left / Alt+Right
ジャンプリストを移動
Ctrl+Z
元に戻す
Ctrl+Y / Ctrl+Shift+Z
やり直し
Ctrl+Shift+G
Git操作ダイアログ
Ctrl+L
LSPサーバーを設定
Ctrl+,
設定を開く
F1
全てのキーバインディングを表示
上記のデフォルトのtxtキーマップが表示されています。VS CodeおよびIntelliJ IDEAのプリセットは設定UI(Ctrl+,)から利用可能で、~/.config/txt/keybindings.tomlで個々のバインディングを上書きできます。
LSPサーバーの設定
LSPはワークスペースごとでオプトインです。最も簡単な開始方法はLSPピッカー(Ctrl+L、またはコマンドパレットの「LSPサーバーを設定」)です。言語を選択すると、txtは選択内容を<workspace>/.txt/lsp.tomlに書き込みます。まずアップストリームからサーバーバイナリをインストールしてください — txtは言語サーバーをダウンロードしません — そしてバイナリが初めて起動される際に、承認を求められます。承認されたバイナリのSHA-256は~/.config/txt/trusted_binaries.jsonにキャッシュされます。変更されたバイナリは再プロンプトされます。
組み込みサーバープリセット
ピッカーには以下のサーバーのプリセットが含まれています。インストール手順については、アップストリームプロジェクトを参照してください:
Rust — rust-analyzer
Go — gopls
TypeScript / JavaScript — typescript-language-server
Kotlin — kotlin-lsp
Java — Eclipse JDT Language Server (jdtls)
C# — OmniSharp
C/C++ (clangd)、Python (pyright)、Lua (lua-language-server)、Zig (zls) もピッカーに含まれています。
lsp.tomlの直接編集
デフォルト以外の場合 — 追加フラグの渡し、カスタムバイナリの指定、または初期化オプションの提供 — <workspace>/.txt/lsp.tomlを編集します:
enabled = true
server = "rust-analyzer" # 追加引数なしのプレーンサーバー。
[servers.rust-analyzer]
command = "rust-analyzer"
[servers.gopls]
command = "gopls"
args = ["serve", "-rpc.trace"] # 追加引数は`args`配列経由で渡します。
# カスタムバイナリパスを使用し、LSPハンドシェイク中に初期化オプションJSONペイロードを転送する。
[servers.pyright]
command = "/opt/homebrew/bin/pyright-langserver"
args = ["--stdio"]
init_options = { pythonPath = "/usr/bin/python3" }
# 複数のサーバーを並べて配置できます。ファイルの先頭にある`server`キーがアクティブなものを選択します。
[servers.typescript-language-server]
command = "typescript-language-server"
args = ["--stdio"]
フィールドは以下の通りです:
enabled — マスター スイッチ。false(デフォルト)の場合、LSPサーバーは起動されず、txtはtree-sitterのみを使用します。
server — アクティブにする[servers.<name>]エントリ。この単一行を編集してサーバーを切り替えます。
[servers.<name>] — サーバーごとのテーブル。commandは実行可能ファイル名または絶対パス、argsは引数リスト、init_optionsはLSPハンドシェイク中に初期化オプションとして送信されるオプションのJSON値です。
ライセンス
txtはMITライセンスとApache 2.0ライセンスのデュアルライセンスです。どちらかを選択できます。
バグレポートと機能リクエスト
バグを見つけたり、機能のアイデアがありますか?GitHubでイシューを開いてください: github.com/ErikHell