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
Install using a plugin manager such as vim-plug.
Plug 'jbyuki/instant.nvim'
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.
:InstantStartServer [host] [port]
: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.
For single buffer sharing use:
:InstantStartSingle [host] [port]
: Host is the URL or IP address. Port is 80 by default. Use this command if you're the first client to connect.:InstantJoinSingle [host] [port]
: Use this command if another client already initiated a single share.:InstantStop
: This will stop the clientFor session sharing:
:InstantStartSession [host] [port]
: If you're the first client to connect.:InstantJoinSession [host] [port]
: Use this command if another client already initiated a session share:InstantStop
Additional useful sharing commands are:
:InstantStatus
: Display the current connected clients as well as their locations:InstantFollow [user]
:InstantStopFollow
:InstantOpenAll
: Open all files in buffers in the current directory. Useful to share the whole directory in session sharing.:InstantSaveAll
: Save all opened buffers automatically. This will also create missing subdirectories.:InstantMark
: Visually mark a region:InstantMarkClear
:ls
.See here.