Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

How would you compare this to the NeoVim project? https://github.com/neovim/neovim


Reposting an answer from a related thread.

The main difference is that vis is written from scratch while neovim inherited an old and hard to maintain code base. This allows vis to experiment with various ideas:

- native multiple cursors/selection support

- structural regular expression support

- different core data structure resulting in efficient large file support

- LPeg based syntax highlighting

- Lua as an in process extension language

- client/server design (not yet implemented)

without having to care about backward compatibility and legacy systems. Of course this has also some drawbacks for example there is no existing plugin ecosystem etc


Great! I remember last time I looked at Vis it wasn't so far along (it had no Lua integration AFAIK).

When I started submitting code to Neovim my biggest desires for it were (1) Lua extensibility (2) A clean codebase (3) Compatibility with (most) Vim plugins.

Perhaps ZyX-l's Vim to Lua project (for Neovim) could help with (3) at some point, if that's desired.

An LPeg based syntax highlighting was also something in the back of my mind, though way down the priority list. Fantastic to see it implemented, it truly is the right choice (Neovim uses Corsix's C99 LPeg parser for its testing framework, automatically exposing headers in a way LuaJIT's FFI groks).

Does it build with LuaJIT? (Sorry for the perhaps stupid question, I've just glanced at your comments here and the terminal "video".

Keep up the good work.


> Does it build with LuaJIT?

I'm not sure. I think a few Lua >= 5.2 dependencies have crept in, but it shouldn't be difficult to fix this if desired.

LuaJIT's FFI is indeed very nice, but it is unfortunate that Lua has essentially been forked after the 5.1 release. The current C->Lua interface has been manually written.


Does this kind of PEG parser deal somewhat decently with partial or incorrect syntax trees?


The parser will match the specified grammar exactly, like it should. You could of course specify a grammar that is broader than the actual language you are parsing.


Well, I am vaguely aware of the existence of "incremental parsers" and "tolerant parsers", and a code editor necessarily works on code that's only partially correct...


Hope ZyX-l could join vis. :)


What are multiple cursors useful for?


evil-mode lets you do things like "insert this text into the same position in a block of consecutive lines" using rectangular selections. I find it occasionally very helpful. It's a little clunky though: you make the selection, press I, edit the first line, press esc, and then the other lines get edited the same way. (I'm not sure what "the same way" means if you delete a bunch of text or move the cursor around while editing.)

I haven't used multiple cursors, but I imagine they'd let you do that, but with the other lines getting updated in real time, and without requiring the insert points to be neatly aligned.

Maybe other stuff too.


Afaik NeoVim attempts to stay compatible with existing vim addons.


Neovim is one huge undertaking. So far they did wonders. Along libreoffice it's one of my favorite projects in spirit.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: