エンジニア向け高速キーボード操作ターミナルテキストエディタ

2026/09/12 4:46

エンジニア向け高速キーボード操作ターミナルテキストエディタ

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

txtは、開発者がターミナル内でコードに即座にアクセスする必要がある場合に特化して、Erik Hellman が構築した超高速でキーボード操作を主体とするテキストエディタです。完全な IDE の代替品ではなく、迅速な編集の補完ツールとして設計されており、フォーマットやマクロなどの複雑なタスクを、現在のウィンドウから離れずに処理できるようにしています。

このツールの直感的な体験は、最初のキー入力からすぐに編集が自然な思考の流れのように感じられるようになっています。ファイルを開く前に必須の設定やプラグインを必要としないことで、従来のエディタの複雑さを回避しています。コマンドラインにシンタックスハイライトや tree-sitter を用いた多数の言語(Rust、Python、Go、TypeScript など)に対応するコードフォールディングといった先進機能も直接統合されています。txt は Language Server に接続してインテリジェントな補完と定義の取得を実現し、Git 操作やファイルピッカーやシンボル検索などのファジィなナビゲーション機能とシームレスに連携します。macOS、Linux、Windows に対応しており、VS Code のプリセットからカスタムキーバインドまで幅広い設定オプションを提供することで、個人開発およびエンタープライズ開発のワークフローの両方に、軽量な速度と強力な機能を橋渡ししています。

本文

TXT: エンジニア向け高速ターミナルテキストエディタ

多くのターミナル系エディタは、編集開始前の準備作業(プラグイン設定、モーダル方式の習得など)が多く、GUI エディタではマウス操作による集中力断絶の課題があります。

TXT はこれらの摩擦を取り除き、**「編集動作を思考そのものとして感じられる」**ことを目指して作られています。

特徴

  • 即座に起動: 追加の設定や複雑なプラグイン構成なし。
  • ターミナル内で完結: マウス操作も可能で、別のツールへの切り替え摩擦ゼロ。
  • 拡張性の高さ: LSP 対応ながら軽量かつ高速。

主要機能

  • 構文ハイライト

    • tree-sitter を採用し、Rust、Python、JavaScript/TSX、Go、Java など多数の言語に対応。
    • Markdown や埋め込みコードブロックにも完全対応。
  • コード管理

    • tree-sitter による正確なコード折りたたみ
    • AST 認識選択範囲: 構文木に沿ったノード選択(
      Ctrl+W
      で拡大、
      Ctrl+Shift+W
      で縮小)。
    • 接着スコープヘッダー: 関数やクラスのヘッダーをピン留め表示。
  • ナビゲーションと検索

    • フージーファイルピッカー: 大規模プロジェクトでの高速移動(
      Ctrl+P
      )。
    • シンボルビュー: 関数・クラス一覧への瞬時アクセス(
      Ctrl+Shift+O
      )。
    • ジャンプリスト: マークの登録と履歴移動機能。
  • Git 統合

    • ステータスバーでのブランチ表示。
    • 変更行のインラインマージン、ステージング・コミット操作ダイアログ(
      Ctrl+Shift+G
      )。
  • LSP 対応 (言語サーバープロトコル)

    • インテリセンス補完、ホバー説明、定義移動、参照検索。
    • プリセットサポート: Rust (
      rust-analyzer
      )、Go、TypeScript など主要言語の事前設定付き。
  • 生産性向上ツール

    • スニペット: 言語固有のスニペットファイルからの読み込み(TextMate 形式)。
    • キーボードマクロ: 編集シーケンスの記録・再生機能。
    • コード書式整形: rustfmt、prettier などの外部ツール連携(ワンキーストローク)。
    • .editorconfig
      サポート
      : インデントスタイルや改行文字の自動検出と適用。
  • マウス操作

    • タブ切り替え、単語選択、ホイールスクロールがスムーズ。
    • スクロールしても編集カーソル位置は保持される設計。
  • カスタマイズ性

    • 構成可能なキーバインド(VS Code や IntelliJ のプリセットも利用可能)。
    • 外部ツールによるファイル変更時の自動再読み込み(ファイルウォッチャー)。

インストール方法

Homebrew (macOS / Linux)

最も簡単な方法です。

brew tap ErikHellman/tap
brew install txt
# 更新: brew upgrade txt

macOS / Linux (curl)

最新リリースバイナリを

~/.local/bin
にインストールします。PATH の設定が必要です。

curl -fsSL https://raw.githubusercontent.com/ErikHellman/txt/main/install.sh | sh

Windows

PowerShell を使用します。インストール先は

%LOCALAPPDATA%\txt
となり、PATH が自動的に追加されます。

irm https://raw.githubusercontent.com/ErikHellman/txt/main/install.ps1 | iex

ソースコードからビルド

Rust 環境(1.88 以降)が必要です。

git clone https://github.com/ErikHellman/txt.git
cd txt
cargo build --release
# 結果: ./target/release/txt

使用方法

  • 開く: ファイルまたはディレクトリを指定して起動します。
    • ディレクトリを開くと、自動的にファイルサイドバーが表示されます。
  • ヘルプ: キーバインド一覧の確認はいつでも
    F1
    で可能。

デフォルトキーバインド

キー動作
Ctrl+S
ファイル保存
Ctrl+Q
アプリ終了
Ctrl+P
フージーファイルピッカー
Ctrl+Shift+O
現在のファイル内のシンボル一覧
Ctrl+Shift+P
コマンドパレット
Ctrl+F
検索
Ctrl+H
検索と置換
Ctrl+W
/
Ctrl+Shift+W
AST ノードの拡大/縮小選択
Ctrl+Z
/
Ctrl+Y
元に戻す・再実行
Alt+M
マッチング括弧へ移動
Alt+L
ビューポートをカーソル中央揃え
Ctrl+Shift+G
Git 操作ダイアログ
Ctrl+,
設定画面を開く

※ VS Code や IntelliJ のプリセットも設定 UI(

Ctrl+,
)から選択可能です。

LSP サーバーの設定手順

LSP はワークスペース単位でオンデマンド起動します。最も簡単な初期化方法は以下の通りです。

  1. LSP ピッカーを開く:
    Ctrl+L
    またはコマンドパレットの「LSP サーバー構成」。
  2. 言語を選択すると、TXT が
    <workspace>/.txt/lsp.toml
    を自動生成します。
  3. サーバーバイナリのインストール: TXT はバイナリを自動ダウンロードせず、ユーザーが外部からインストールする必要があります(実行時に承認が必要です)。

内蔵プリセット一覧

ピッカーに含まれる主要なプリセットと、追加で利用可能なサーバー:

  • Rust:
    rust-analyzer
  • Go:
    gopls
  • TypeScript/JavaScript:
    typescript-language-server
  • Kotlin:
    kotlin-lsp
  • Java:
    Eclipse JDT Language Server (jdtls)
  • C#:
    OmniSharp
  • その他:
    clangd
    (C/C++),
    pyright
    (Python),
    lua-language-server
    ,
    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"]

# カスタムバイナリパスと初期化オプションを指定する場合
[servers.pyright]
command      = "/opt/homebrew/bin/pyright-langserver"
args         = ["--stdio"]
init_options = { pythonPath = "/usr/bin/python3" }

設定項目の役割:

  • enabled
    : サーバー起動フラグ(false で tree-sitter のみ動作)。
  • server
    : 有効にするサーバーエントリの名前。
  • [servers.<name>]
    : サーバー定義ブロック。
    • command
      : 実行ファイルの名前または絶対パス。
    • args
      : 引数リスト。
    • init_options
      : LSP ハンドシェイク時に送信する JSON オプション(オプショナル)。

ライセンス

TXT は MIT License および Apache License 2.0 のデュアルライセンスで提供されています。自由にご使用ください。

バグ報告と機能リクエスト

バグの報告や新しい機能のご提案は、GitHub Issue を作成してください。

  • リポジトリ:
    github.com/ErikHellman/txt/issues

バグ報告時の記載事項:

  • 使用しているオペレーティングシステム
  • TXT のバージョン(
    txt --version
    で確認可能)
  • 問題を再現するための手順

同じ日のほかのニュース

一覧に戻る →

2026/09/12 2:45

数学における AI のズレ

## Japanese Translation: 数学問題を利用した AI ベンチマークは、企業の目標と基礎研究の価値の間で危険な不一致を生じさせ、数学および学術コミュニティに深刻な害をもたらすと主張しています。AI に回答を求めることは、真の洞察や新しいアイデアを育むのではなく、理解のための単なる代理手段となるのみです。また、急遽策された解決策はしばしば適切な出典を認めておらず、広範な剽窃のリスクを負います。さらに、単純な正誤問題を大量生産することは、学生を育成し、人間の相互作用を通じて洗練された概念を発達させるために必要である豊穣な環境を破壊します。 数学は蓄積された知識に依存しており、有名な問題は教科書に掲載されるまでに長期間の議論を要するランドマークとして機能します。このプロセスは研究者間の本質的な人的伝達チェーンを保証します。理解に基づいてトレーニングする年数を AI による直接的な結果生成に取って代わられる場合、知的作業の当初の目的に反する体系的脅威が浮上します。現在数学者が直面しているこれらのリスクは、対処されない限り、間もなくすべての科学的および創造的な職業に影響を及ぼす可能性があります。結局のところ、この分野が利益を得るかどうかは、今後人間の側がこの技術に関する意思決定によって決まります。したがって、研究者、テクノロジー企業、社会が直ちに行動を起こし、人類の知的進歩を守り、学生の発達という貴重な資源と独自のアイデアを維持する必要があります。

2026/09/12 3:24

Google アプリ広告に220ドル費やしましたが、インストールの60%がロボットでした。

## Japanese Translation: 「Dayzle」というパズルアプリを開発していた開発者が、日間の広告予算を CA$40 から CA$80 に倍額に引き上げたことが、キャンペーン設定の抜け穴を利用した高度なボット農場によるものであったと最近発見しました。当初、初期結果が不調だったためインストール単価上限を削除してしまったことで、開発者は誤ってボットが Google Play Store を迂回し、保存されたファイルからアプリの古いバージョンを直接インストールすることを可能にしてしまいました。これらの不正なインストールは、即座に動画を視聴してサイトを離れることで変換トラッキングをトリガーし、Google のアルゴリズムに偽の変換 engagement に対して請求を行うように仕向けました。これにより、28 の異なる電話モデルで 19 の州にわたって架空のエンゲージメントが fact-billed されました。2 週間で合計 56 のインストールが請求されました:そのうち 33 はボットパターンに一致し、7 つは非ターゲット国からのものであり、本物のユーザーによる有意なエンゲージメントを達成したのはわずか 13 です。ここでの最も重要な教訓は、ネイティブのインストール数単独では成功の信頼性の高い指標にならないという点です。外部ネットワークが人間の行動を模倣して操作可能であり、特にボットはクリックせずに動画を視聴することでインストールをトリガーし、それが変換としてカウントされたためです。この問題を解決するため、開発者はキャンペーンの目標を「アプリを開くこと」から「ゲーム内パズルの勝利」へと厳格化し、正当な変換とみなされる基準を実質的に引き上げました。この事例は広告主に対して明確な警告となっています:検証済みのプラットフォームでも回避可能であり、広告が効果的であると結論付ける前に、古いソフトウェアや疑わしいセッション速度などの異常を検出するために生データの深層分析を必要とする場合があります。現在、開発者は無効トラフィックフォームの提出に関する返信と、潜在的な返金について待機しています。

2026/09/12 3:50

GrapheneOS の書き換えられたメッセージアプリがリリースされました。

## Japanese Translation: この更新は、メッセージアプリにおいて、レガシーなインターフェースを Jetpack Compose と Material 3 デザインに置き換えるという大きな転換点です。バックワートード互換性よりも現代の安定性とセキュリティを最優先しています。最も重要な変更点は、最小 Android SDK を 36 に、ターゲット SDK を 37 に引き上げたことであり、これにより古いデバイスはサポートされず、ユーザーはオペレーティングシステムのアップグレードが必要となります。スヌーzing という新機能(1、8、または 24 時間)や、大型スクリーン向けの適応型二分割レイアウトなどを含むビジュアルのリニューアルに加えて、このリリースはセキュリティを大幅に強化しています。プライベートなファイル URI の共有をブロックし、null 引用による多数のクラッシュ状態を修正したためです。メディア処理も再構築され、ピンチ操作によるズーム表示やスクリーンリーダー用のアクセシビリティラベルの強化が実現しました。また、アプリは会話ごとの通知設定を維持しつつ、専用プライバシーセクションを導入し、システム構成を現代的な互換性のために書き換えました。結局のところ、この移行により、長期的なセキュリティの確保、通知の最適化を通じたバッテリー効率の向上、および最新のモバイル開発標準への対応が実現します。 ## Text to translate: The original summary is strong; to tighten alignment with the Key Points List without adding new information, only minor clarification is needed around the "mandatory" phrasing. However, since this is a reasonable inference and overall quality is high, I will return an improved but nearly identical version that slightly clarifies the upgrade implication while preserving clarity: ## Summary This update marks a major transformation for the messaging app by replacing its old interface with Jetpack Compose and Material 3 design, prioritizing modern stability and security over backward compatibility. The most critical change is raising the minimum Android SDK to 36 and target SDK to 37, which means older devices will no longer be supported and users will need to upgrade their operating systems. Beyond the visual overhaul—including new features like snoozing notifications (1, 8, or 24 hours) and an adaptive two-pane layout for large screens—the release significantly strengthens security by blocking private file URI sharing and fixing numerous crash conditions caused by null references. Media handling has been rebuilt to offer better pinch-to-zoom viewing and enhanced accessibility labels for screen readers. The app also preserves per-conversation notification settings while introducing a dedicated Privacy section and rewriting system configurations for modern compatibility. Ultimately, this shift ensures long-term security, improved battery efficiency through optimized notifications, and alignment with current mobile development standards.