世界を動かす技術を、日本語で。

Ki Editor - AST上で動作するエディタ

2026年3月7日原文(ki-editor.org)

概要

  • First-class syntax node interaction による直感的なコード操作
  • Multiple cursors で並列編集とリファクタリングの効率化
  • Redefine modal editing で統一された選択モードと柔軟な操作性
  • コーディング意図とアクションのギャップ解消
  • 一貫性と柔軟性を両立した編集体験

コーディング意図とアクションのギャップ解消

  • First-class syntax node interaction により、構文ノードを直接操作可能
  • キーボードやマウスの複雑な操作を排除し、意図した編集を即座に実現
  • コード構造を保ったまま、柔軟なリファクタリングや編集が可能
  • 開発者の思考とエディタの動作をシームレスに接続

並列編集とリファクタリングの効率化

  • Multiple cursors 機能で、複数箇所を同時に編集
  • 構文ノード単位での並列操作により、大規模なコード変更も迅速に対応
  • バルク編集や一括リファクタリングの時間短縮
  • コード品質維持と生産性向上の両立

統一された選択モードと柔軟な操作性

  • Redefine modal editing により、Selection Modesを標準化
  • 単語、行、構文ノードなど、さまざまな単位での選択が可能
  • 一貫した操作性で、編集作業の混乱を最小化
  • 柔軟性と直感性を兼ね備えた新しいモーダル編集体験

Hackerたちの意見

シンタックスベースのナビゲーションを重視したVimライクな(ターミナルとVSCodeの拡張)エディタ。VimとHelixとの比較はこちら: https://ki-editor.org/docs/comparison#user-content-fn-1

あの比較表は変だし、時々間違ってることもある。例えば、Neovimはデフォルトで外部ファイルの変更を検出して更新するし。Kiのキーバインディングの一貫性は「素晴らしい」。bit vim/helix: > 「見ての通り、これらのキーマップには単一の論理的な分類がない。小文字-大文字、ノーマル-オルト、左右のブラケット、あるいは全く説明できないものもある。」Word、End、Back、Change Word、さらにはChange Inner(など)は僕には非常に論理的に感じるし、編集してるときにエディタと話してるような気分になる。別のやり方を学んだ人には意味がわからないかもしれないけど、理解しようとする努力をすれば全く意味があるんだ。自動運転を学んでずっと運転してから、マニュアルを「全く説明できない」と呼ぶようなもんだよ。単に別のやり方を学んで、それが唯一の正しい方法だと信じ込んでるだけなんだ。作成者がVSCode出身だってことがわかるね(マルチカーソルは無駄な機能、s/search/replaceを使ってマクロに慣れれば全く新しい世界が開けるよ)。

僕のエディタの分類はこんな感じかな。1. オーソドックス。見た目や統合に主に焦点を当ててる。2. モーダル、Vimの改善。基本的なVimのキーバインディングを維持しつつ、ちょっとした改善を加えてる。3. モーダル、Vimのアプローチを再考。Kiはこの3番目のカテゴリーに入ってて、常にチェックしてる。

  1. 上記の全て。つまりEmacsだね。

Vimの改善。Edのビジュアルモードが改善された!

それなら、面白いかもしれないモーダルコードエディタのプロジェクトに取り組んでるよ。これもASTに直接操作してて、UIノードとして表現されてるから、普通のテキストレイアウトに近い感じになってる。もし試してみたいなら、プロフィールにメールしてね。早めのフィードバックももらえると嬉しい(まだ初期開発中だけど)。

私も全く同じだよ。今まで多くの挑戦者がいたけど、同じチャンピオンがいる(主観的なのは分かってるけど)。

「ファーストクラスの構文選択」は、Jetbrains IDEでよく使うショートカットを思い出させるな。選択を拡張/縮小するやつ。Ctrl + W Ctrl + Shift + W https://www.jetbrains.com/help/idea/working-with-source-code... ファイルの「テキスト」とのやり取りに対する見方が本当に変わった。VS CodeやZedなんかも似たような操作があるけど、僕の経験では、拡張と縮小がちょっと粗すぎる。

Neovimでもtree-sitterを使ってインクリメンタル選択が利用可能だよ。

IntelliJの一番好きな機能はこれだな、あのバカみたいなコンテキストアクションメニューと一緒に。

同意する、最高の機能だよね。「メソッドを抽出する」みたいな機能と組み合わせると、地味なリファクタリングが超早くなる。

自分もhelixで常に使ってるよ。vscodeのは微妙だけど。GitHubでtree-sitterに切り替える話を見たことがあるけど、それがAST関連のアクションを改善するはずだった。結局、何も進展しなかったと思うけど。ASTを意識した編集が大好きなんだ。Lispを編集するのがいつも楽しい理由の一つだと思う。JavaScriptで説明するのが複雑なもの(LSPサポートがないもの)は、ほぼ全てASTパーサーが必要だけど、Lispだと単純なリスト操作で済むからね。Clojureの週末を過ごした後にTypeScriptに戻ると、slurp!や他のpareditコマンドがすごく恋しくなるよ。

Hacker Newsで議論の続きを見る