When I use nvim, I need to (know i can) understand neovim completely to make myself comfortable.
I switched from vim so i search for the help manual. just like vim, i get the user manual and reference manual. So I know I can understand neovim’vim very well.
But how can I understand neovim’neo? I need to know what nvim did upon vim and why it did and how. Then I think I can understand neovim very well. After that I can modifier nvim for myself and I can feel comfortable.
How can i do that and where can i start.
I’m not native English speaker, sorry for my poor English.
the only difference between neovim and vim is that neovim is taking another path for writing plugins and handling things under its core.
The biggest thing that neovim has its lua api. And i think this was the reason why neovim was created in the first place and departed from vim to its own new path of adding luajit. And thus moving from the viml script. Which was very slow and for you to use vim you had to learn viml script which was not a good thing because in order to use an editor you had to learn an editor on top of that you also had to learn a new language that you couldn’t use outside of that editor.
The second big proponent for creating neovim and adding luajit was that viml script was very slow. By the way viml script was recently upgraded to verion 9 which according to vim community is faster then the previous version of the viml script.
by this comparison you can see what the neo in neovim stands for. To create a new vim editor that is fast and powerful.
@TheSafdarAwan Neovim was created because Thiago’s patch for asynchronous jobs got rejected. There were early idea to transpile Vim script to Lua, but that was just one of several unrelated ideas and never got implemented. It was only years later that we got built-in Lua support.
To answer to OP, Neovim is basically just Vim. If you know Vim then you know Neovim. Most of Neovim’s new features are interesting to plugin authors who can build cool plugins that would not have been possible in Vim at that time. Some of the more prominent changes off the top of my head:
Support for true color, undercurl and other modern features in the terminal
Adheres to the XDG Base Directory specification (no more home directory bloat) (:h base-directories)
Asynchronous jobs let your run for example a linter as a separate process without blocking the editor (:h channel.txt)
Built-in LSP client gives you IDE-like tooling (:h lsp)
Built-in Tree-sitter support lets you write plugins which actually understand the structure of the code instead of using regex matching (:h treesitter)
Lua as an alternative (not replacement) to Vim script (:h lua)
Remote plugins are plugins that can be written in any language (not as popular as they used to be now that we have Lua, but still great for when you want to use a specific library) (:h remote-plugin)
A well-defined Neovim API provides primitive building blocks for many tasks (:h api)
GUIs can now run as separate processes, decoupling the GUI from the editor (I don’t have any experience with GUIs because the terminal does all I need)