Skip to content

A rewrite of VSCodeVim, backed by neovim. Still in development, not meant for use.

License

Notifications You must be signed in to change notification settings

Chillee/VSCodeNeovim

Folders and files

NameName
Last commit message
Last commit date
Apr 30, 2017
Oct 22, 2017
Oct 28, 2016
Oct 30, 2017
Mar 19, 2018
Mar 19, 2018
May 24, 2017
Oct 24, 2017
May 24, 2017
Oct 18, 2016
Jun 24, 2017
Jun 15, 2017
Nov 12, 2015
Dec 23, 2017
May 23, 2017
Sep 28, 2016
Jun 30, 2017
Mar 19, 2018
Apr 30, 2017
Mar 19, 2018
Mar 19, 2018
Oct 25, 2017
Aug 14, 2016
Apr 30, 2017
Oct 2, 2016

Repository files navigation


VSCodeNeoVim

Vim emulation for Visual Studio Code.


VSCodeNeoVim is a Visual Studio Code rewrite of VSCodeVim, changing everything to be backed by Neovim.

This is the temporary repo for VSCodeNeovim for development purposes. Please submit PRs/issues here. This extension will not be released on the marketplace, but I will be providing a .vsix for testing purposes.

Some notes on contributing:

  • Much of the VSCodeVim code is still in here. The only places it's used are things like some utility Position functions, etc.
  • Most of the "hard" work is in extension.ts.
  • The rest of the work is in srcNV. NvUtil contains a lot of utility functions with working with neovim rpc requests. RPCHandlers contain handlers for RPC requests.
  • You need to have the newest nvim (installed from nightly/master) installed. At the very least, you need a version of neovim that has this issue fixed: neovim/neovim#6166
  • The easiest way to test is to have the neovim instance for VSCode be created by connecting to a pipe. In order to do so, set NVIM_LISTEN_ADDRESS equal to /tmp/nvim, open a neovim instance, and then open the extension. This allows you to see what's happening on the neovim side (any errors/prompts/etc.) This is how my typical setup for development looks: . There's some code to do this automatically, but it doesn't check if /tmp/nvim is a socket, so it may still fail. Also, I think performance is slightly worse when you do this.

Other helpful documentation links: https://vscodevim.slack.com/files/U3EUW86U9/F62R31A5V/Integrating_Neovim_into_VSCode "Design" doc https://neovim.io/doc/user/api.html#api-global Neovim RPC API documentation https://neovim.io/doc/user/ui.html Neovim remote UI documentation. We currently aren't using it but will likely use it at some point in the future.
https://github.com/neovim/node-client The node client we're using
https://github.com/lunixbochs/ActualVim Another neovim backed vim plugin (for sublime)

Important discussions links: https://gitter.im/neovim/neovim For talking to the neovim devs https://gitter.im/neovim/node-client For talking to the neovim node-client devs https://vscodevim.slack.com/ For talking to the VSCodeVim devs

Important Neovim PRs to follow: neovim/neovim#5269 Text Diffs (so we don't have to sync the entire buffer each time)

Some screenshots (kinda hard to show what's changed without at least a gif...): Wildmenu working! Autocomplete working!

About

A rewrite of VSCodeVim, backed by neovim. Still in development, not meant for use.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published