Skip to content

ii14/neorepl.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

neorepl

neovim REPL for lua and vim script

Works best with neovim 0.8

Start a new instance with :Repl.

In insert mode type /h and enter to see available commands.

demo


NOTE: If you're using an auto-completion plugin like nvim-cmp, read :h neorepl-using-with-other-plugins!

Starts in lua mode by default. You can switch modes with /vim (short version: /v) for vim script and /lua (short version: /l) for lua. You can also run one-off commands with them, like for example /v ls to list buffers.

Multiple lines can get evaluated when line continuations start with \ as the very first character in the line. If you need to evaluate a line that starts with / or \, add a space before. Note that vim script has line escaping that works just like this. So to break lines in a single expression with vim script, there has to be two backslashes. You can break line in insert mode with CTRL-J.

Lua has its own environment, variables from the REPL won't leak to the global environment. Global environment is referenced in the _G variable. In vim script you can use the s: scope, but it's shared between all REPL instances for now.

You can switch buffer and window context with /b and /w commands, so things like vim.api.nvim_set_current_line() or :s/foo/bar/g will run on the other buffer.

A new REPL instance can be also spawned with require'neorepl'.new{}. Example function that mimics vim's cmdwin or exmode:

vim.keymap.set('n', 'g:', function()
  -- get current buffer and window
  local buf = vim.api.nvim_get_current_buf()
  local win = vim.api.nvim_get_current_win()
  -- create a new split for the repl
  vim.cmd('split')
  -- spawn repl and set the context to our buffer
  require('neorepl').new{
    lang = 'vim',
    buffer = buf,
    window = win,
  }
  -- resize repl window and make it fixed height
  vim.cmd('resize 10 | setl winfixheight')
end)

For the list of available options see :h neorepl-config.