# \[ANN\] Backstage OCaml: ocaml.nvim - A Neovim Plugin for OCaml

**URL:** <https://discuss.ocaml.org/t/ann-backstage-ocaml-ocaml-nvim-a-neovim-plugin-for-ocaml/17383>\
**Category:** Ecosystem\
**Tags:** announce\
**Created:** [October 14, 2025, 2:43pm UTC](https://discuss.ocaml.org/t/ann-backstage-ocaml-ocaml-nvim-a-neovim-plugin-for-ocaml/17383 "2025-10-14T14:43:14Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![Lucccyo](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/lucccyo/32/6070_2.png) [@Lucccyo](https://discuss.ocaml.org/u/Lucccyo)\
**Post date:** [October 14, 2025, 2:43pm UTC](https://discuss.ocaml.org/t/ann-backstage-ocaml-ocaml-nvim-a-neovim-plugin-for-ocaml/17383/1 "2025-10-14T14:43:15Z")

</div>

We’re excited to announce **ocaml.nvim** , a new Neovim plugin actively being developed by Tarides that brings advanced OCaml development features to Neovim users. Think of it as the Neovim sibling of [ocaml-eglot](https://github.com/tarides/ocaml-eglot), which we released earlier this year for Emacs users.

## What is ocaml.nvim?

Modern code editors communicate with programming languages through the Language Server Protocol (LSP), which provides essential features like syntax checking, code navigation, and auto-completion. However, OCaml’s language server exposes powerful custom commands beyond what generic LSP clients can access.

ocaml.nvim works alongside generic Neovim LSP plugins like `nvim-lspconfig`, providing direct access to advanced ocamllsp features without requiring complex editor-side logic. The plugin gives you access to all the advanced Merlin commands not supported by generic LSP clients.

## Key Features

**Typed Holes Navigation** - Navigate between typed holes (`_`) and interactively substitute them with the Construct command.

**Semantic Navigation** - Move through your code semantically: jump between expressions, parent `let` bindings, modules, functions, and `match` expressions.

**Phrase Navigation** - Move between OCaml phrases (top-level definitions) in your buffer.

Many more features are in development, including alternating between `.ml` and `.mli` files, type enclosing, and pattern matching generation.

## Getting Started

Installation is straightforward with lazy.nvim:

```lua
require("lazy").setup({
  { "tarides/ocaml.nvim",
    config = function()
      require("ocaml").setup()
    end
  }
})

```

The plugin complements your existing LSP setup—you’ll continue to use Neovim’s built-in LSP for standard features while ocaml.nvim adds OCaml-specific capabilities.

## Project Status

The ocaml.nvim repository is now public on [GitHub](https://github.com/tarides/ocaml.nvim), with comprehensive documentation, a feature table, and screencast demonstrations. We’re working towards a stable 1.0 release and welcome feedback from the community.

Try out `ocaml.nvim` and let us know what you think! For questions or feedback, you can post an issue on the ocaml.nvim GitHub repository.

---

_[View the full topic](https://discuss.ocaml.org/t/ann-backstage-ocaml-ocaml-nvim-a-neovim-plugin-for-ocaml/17383)._
