A Neovim IDE integration for Codex. It follows the original architecture of the Claude Code integration and adapts it for Codex. will continue to be improved.
- Pure Lua implementation with minimal dependencies
- Built-in WebSocket MCP (Model Context Protocol)
- Safe in-editor Codex terminal control
- Send selections or files as @ mentions to Codex
- Accept or reject diffs inside Neovim
{
dir = "/home/dev_local/dev_plugin/codex.nvim",
dependencies = { "folke/snacks.nvim" },
config = true,
keys = {
{ "<leader>cc", "<cmd>Codex<cr>", desc = "Codex: Toggle" },
{ "<leader>cf", "<cmd>CodexFocus<cr>", desc = "Codex: Focus" },
{ "<leader>cs", "<cmd>CodexSend<cr>", mode = "v", desc = "Codex: Send selection" },
{
"<leader>cs",
"<cmd>CodexTreeAdd<cr>",
desc = "Codex: Add file",
ft = { "neo-tree", "oil" },
},
},
}- Neovim 0.8+
- Codex CLI installed
folke/snacks.nvimrecommended for terminal UX
- Open the Codex terminal with
:Codex - Select text in visual mode and run
:CodexSend - From tree views (neo-tree / oil.nvim), use
:CodexTreeAddOnly neo-tree and oil.nvim are supported tree views.
require("codex").setup({
terminal_cmd = "/path/to/codex",
})require("codex").setup({
env = {
ENABLE_IDE_INTEGRATION = "true",
CODEX_CODE_SSE_PORT = "12345",
},
})This plugin is heavily inspired by the design and implementation of claudecode.nvim. The repository referenced is https://github.com/coder/claudecode.nvim. Many thanks to its maintainers.
Codex を Neovim から扱うための IDE 統合プラグインです。Claude Code 用に作られた設計を踏襲しつつ、Codex 用に調整しています。 今後も改善を続ける予定です。
- Lua のみで実装した軽量な統合
- MCP (Model Context Protocol) の WebSocket 実装を内蔵
- Codex のターミナルを Neovim 内で安全に制御
- 選択範囲やファイルを @ メンションとして Codex に送信
- 差分プレビューの受け入れ / 拒否を Neovim 内で完結
{
dir = "/home/dev_local/dev_plugin/codex.nvim",
dependencies = { "folke/snacks.nvim" },
config = true,
keys = {
{ "<leader>cc", "<cmd>Codex<cr>", desc = "Codex: Toggle" },
{ "<leader>cf", "<cmd>CodexFocus<cr>", desc = "Codex: Focus" },
{ "<leader>cs", "<cmd>CodexSend<cr>", mode = "v", desc = "Codex: 選択範囲を送信" },
{
"<leader>cs",
"<cmd>CodexTreeAdd<cr>",
desc = "Codex: ファイルを追加",
ft = { "neo-tree", "oil" },
},
},
}neo-tree のポップアップ(filetype: neo-tree-popup)にも同じキーマップが適用されます。oil.nvim(filetype: oil)でも同様に使えます。
- Neovim 0.8 以降
- Codex CLI がインストール済みであること
- 端末を快適に扱うために
folke/snacks.nvimを推奨
:Codexで Codex ターミナルを開きます- 選択範囲をビジュアルモードで選び、
:CodexSendで送信します - ツリー表示(neo-tree / oil.nvim)では
:CodexTreeAddが使えます neo-tree と oil.nvim のみ対応しています。
既定は Ctrl-] で前のウィンドウへ戻ります。macOS で Cmd-] にしたい場合は terminal.unfocus_key を設定してください。
require("codex").setup({
terminal = {
unfocus_key = "<D-]>", -- Cmd-] でフォーカスを戻す
},
})Issue や PR 歓迎です。バグ報告や改善提案を気軽にお寄せください。
Codex CLI が通常のパスに無い場合は terminal_cmd を指定してください。
require("codex").setup({
terminal_cmd = "/path/to/codex",
})Codex CLI 起動時に渡す環境変数を追加できます。
require("codex").setup({
env = {
ENABLE_IDE_INTEGRATION = "true",
CODEX_CODE_SSE_PORT = "12345",
},
})本プラグインは claudecode.nvim の設計と実装に大きく助けられました。参考にしたリポジトリは https://github.com/coder/claudecode.nvim です。開発者の皆さまに感謝します。
