sudo-tee/opencode.nvim
neovim frontend for opencode - a terminal-based AI coding agent
🤖 opencode.nvim – Opencode AI コーディングエージェント用 Neovim フロントエンド
何ができるか
opencodeCLI(ターミナルベースのAIコーディングアシスタント)と通信する Neovim プラグインです。エディタ内にチャットスタイルのUIを開き、現在のファイル、選択範囲、診断情報などを自動でAIに送信することで、Neovimから離れることなくコードの提案、編集、またはファイル全体の生成を依頼できます。
主な機能
| 機能 | 得られる利点 |
|---|---|
| チャットパネル | 永続的な会話ウィンドウで、会話履歴を表示し、エディタのコードに集中したままプロンプトを送信できます。 |
クイックバッファチャット (<leader>o/) |
ビジュアルモードでは選択したテキストがコンテキストになります。ノーマルモードでは現在の行が使用されます。AIの返答はバッファに直接適用されます。 |
| セッション管理 | セッションはワークスペースに関連付けられ、ディスク上に保存されます($XDG_DATA_HOME/opencode/snapshot/...)。キーマップでセッションの切り替え、名前の変更、フォーク、または元に戻すことができます。 |
| コンテキストの自動取得 | 現在のファイル、選択テキスト、診断情報、カーソル周辺、Gitのdiffなど、オプションで自動的に含めることができます。 |
| モデル/プロバイダの切り替え | 1クリックでLLMモデルやプロバイダ(例:OpenAI、Anthropic)を変更でき、モデルバリアントも選べます。 |
| 差分表示と復元ツール | 最後のプロンプト以降の変更を差分で表示し、個別のファイルや全体のセッションを元に戻す、スナップショットの復元が可能です。 |
| 豊富なUI | スプリット位置(右/左/現在)をカスタマイズ可能、TreesitterによるMarkdownレンダリング、コスト・トークンカウンター、オプションのアイコン(nerdfontsまたはテキスト)が利用可能。 |
| 拡張可能なフック | on_file_edited、on_session_loadedなどのコールバックにより、キーポイントでカスタムLuaコードを実行できます。 |
| 外部サーバー対応 | リモートのOpencodeサーバーに接続可能。オプションで起動、認証、パスマッピングのロジックも設定できます。 |
インストール方法(例:lazy.nvim)
{ "sudo-tee/opencode.nvim",
config = function()
require("opencode").setup({})
end,
dependencies = {
{ "MeanderingProgrammer/render-markdown.nvim", opts = { anti_conceal = {enabled = false}, file_types = {'markdown','opencode_output'} }, ft = {'markdown','Avante','copilot-chat','opencode_output'} },
"saghen/blink.cmp", -- オプションの補完ソース
"folke/snacks.nvim", -- オプションのピッカーUI
},
}
また、Opencode CLI(opencode ≥ v0.6.3)が $PATH にインストールされている必要があります。
通常のワークフロー
- プロジェクトディレクトリで Neovim を起動します。
<leader>og(または設定したキー)を押して Opencode UI を開きます。- 入力パネルにプロンプトを入力します。プラグインが自動的に現在のファイル、選択範囲、診断情報をコンテキストとして追加します。
- AIの返答は出力パネルに表示されます。ファイルリンク(
gf)をクリックして参照されたコードにジャンプできます。 - 差分ショートカット(
<leader>od,<leader>orAなど)を使って変更内容を確認または元に戻します。 - セッションを切り替え(
<leader>os)、名前を変更(<leader>oR)、または過去のメッセージから新しいブランチをフォーク(<leader>oT)します。
設定のハイライト
preferred_picker/preferred_completionで、ファイル参照や補完に最適なUIを選択できます。ui.position(right/left/current)とui.input_position(bottom/top)でパネルの表示位置を制御できます。context.enabledで自動コンテキスト取得をオン/オフ;diagnostics.warningやselection.enabledなどのサブオプションも微調整可能。serverテーブルでリモートのOpencodeサーバーを実行(カスタムURL、認証、自動終了、パスマッピング)。prompt_guardはLua関数として設定でき、条件を満たさないプロンプトをブロックできます。
対象ユーザー
- エディタから離れずにAI支援コーディングループを実現したいNeovimの熟練ユーザー。
- Opencode CLI(または互換性のあるセルフホストサーバー)を使用しているチームで、よりIDEに近い体験を求める人。
- Luaプラグインの設定に慣れており、コンテキスト、モデル選択、セッション履歴に対して細かい制御をしたい人。
注意点
- プラグインは初期段階です。READMEにはバグや破壊的変更の可能性について警告されています。
- 外部の
opencodeバイナリに依存しており、それ自体も開発中です。 - 一部の機能(例:クイックバッファチャット)は 実験的 とマークされています。
上記のすべての詳細はリポジトリのREADMEから直接引用;追加の機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト