Instant.nvim: collaborative editing in Neovim using built-in capabilities (2022) by jesprenj
instant.nvim is a collaborative editing plugin for Neovim written in Lua with no dependencies.
-
Powerful collaborative editing algorithm
-
UTF-8 Support
-
Single or multiple buffer sharing
-
Virtual cursors with username of other clients
-
Spectate actions of a user
-
Built-in localhost server
-
Separated undo/redo for each user
-
Persistent data on server
- Neovim 0.4.4 or above
Install using a plugin manager such as vim-plug.
Plug 'jbyuki/instant.nvim'
- Set your username in
init.vim
:
let g:instant_username = "USERNAME"
See here for more customization options.
The collaborative editing plugin works with a server which connects together the clients. Thus, a server must be running which must be reachable by all clients.
For a localhost or LAN network, you can simple use the built-in server included in the plugin.
- Start it with
:InstantStartServer [host] [port]
- When done stop it with
:InstantStopServer
The default is to serve localhost only, on port 8080. For a more advanced (remote server) overview see Deploy a server
To start the client, the first user to connect to the server must initiates the share with a special commands with has the form InstantStart...
. Subsequent joining clients, use a different command InstantJoin...
. Having distinct commands to start and join a server ensures that files are not overwritten by accident on connection.
There are essentially two modes of sharing at the moment.
- Single buffer sharing: This will only share the current buffer.
- Session sharing: This will share all opened (an