Neovim Ruby

Build Status Gem Version

Ruby support for Neovim.


Add this line to your application's Gemfile:

gem "neovim"

And then execute:


Or install it yourself as:

gem install neovim


Neovim supports the --listen option for specifying an address to serve its RPC API. To connect to Neovim over a Unix socket, start it up like this:

$ nvim --listen /tmp/nvim.sock

You can then connect to that socket path to get a Neovim::Client:

require "neovim"
client = Neovim.attach_unix("/tmp/nvim.sock")

Refer to the Neovim docs for other ways to connect to nvim, and the Neovim::Client docs for a summary of the client interface.


Plugins are Ruby files loaded from the $VIMRUNTIME/rplugin/ruby/ directory. Here's an example plugin:

# ~/.config/nvim/rplugin/ruby/example_plugin.rb

Neovim.plugin do |plug|
  # Define a command called "SetLine" which sets the contents of the current
  # line. This command is executed asynchronously, so the return value is
  # ignored.
  plug.command(:SetLine, nargs: 1) do |nvim, str|
    nvim.current.line = str

  # Define a function called "Sum" which adds two numbers. This function is
  # executed synchronously, so the result of the block will be returned to nvim.
  plug.function(:Sum, nargs: 2, sync: true) do |nvim, x, y|
    x + y

  # Define an autocmd for the BufEnter event on Ruby files.
  plug.autocmd(:BufEnter, pattern: "*.rb") do |nvim|
    nvim.command("echom 'Ruby file, eh?'")

When you add or update a plugin, you will need to call :UpdateRemotePlugins to update the remote plugin manifest. See :help remote-plugin-manifest for more information.

Refer to the Neovim::Plugin::DSL docs for a more complete overview of the Neovim.plugin DSL.

Vim Plugin Support

The Neovim gem also acts as a compatibility layer for Ruby plugins written for vim. The :ruby, :rubyfile, and :rubydo commands are intended to match their original behavior, and their documentation can be found here.


  1. Fork it (
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request