Hacker News new | ask | show | jobs
by trip-zip 758 days ago
What's the use case for a separate GUI for neovim? I remember using macvim for a few days maybe 8 years ago, but I never "got it". It felt like the benefits of having my editor in my terminal were thrown out for little return.
4 comments

If neovim had a proper gui, you could move away from some of the limitations of the terminal. The biggest being using fixed width characters for drawing UI elements.

Emacs does it pretty well, one of the few things that makes me jealous of emacs as a vim user.

IIUC fixed widths is more than just a UI problem. Lots of internal code is assuming that. But maybe it works well-enough that it isn't a real issue.

I remember trying a terminal that didn't have fixed char widths and it mostly worked. The only real issue was line wrapping (as vim and the terminal would both wrap based on how long they considered the line to be). So maybe it would be possible! I would love to see solid support for variable-width fonts.

I know variable-width fonts are controversial, but I actually think they work well for coding but haven't had the chance to use them much due to Vim limitations. But especially for Markdown and similar mostly-text content they seem like a clear win.

And input limitations can be resolved by non-terminal UIs (for example like Ctrl+i and Tab being mapped to the same control character in old terminals - that one is solved by newer protocols, but the problems don't end there.)
Neovim already supports these keys as long as you are using a terminal that supports the Kitty keyboard protocol (Kitty, wezterm, alacritty, foot, ghostty)
also even the newer protocols fail to support modifier sides (left vs right shift)
Kitty keyboard protocol does indeed support modifier sides.
No it doesn't, and the author rejected the proposal to add them

https://sw.kovidgoyal.net/kitty/keyboard-protocol/

Modifiers are encoded as a bit field with:

shift 0b1 (1) alt 0b10 (2) ctrl 0b100 (4) super 0b1000 (8) hyper 0b10000 (16) meta 0b100000 (32) caps_lock 0b1000000 (64) num_lock 0b10000000 (128)

Yes modifiers are a state, not a key. The kitty keyboard protocol does indeed send events for left and right modifier key press/releas as you can easily see for yourself by running

kitten show-key -m kitty

in a kitty terminal and pressing the left and right modifier keys.

I'd really like image support in a Neovim GUI.

It'd make markdown editing easier for me

Seems more likely to be something you implement with e.g. kitty/iterm/sixel escape codes than moving to a GUI app. Actually probably is something that could be implemented in neovim today. Maybe even by a plugin, not sure what control they have over stuff like that.
see 3rd/image.nvim on github. There might be others
Just basics like fonts and window sizing make the gui version of Vim a better experience for me.
I mostly work on macOS nowadays, and I like macvim.

Of course there are plenty of Neovim GUI. Currently happy enough with VimR.

+1 for VimR
proportional fonts

many broken things fixed automagically, like those meta keybinds that took years to implement, and also clipboards, then menus

then window management from resizing to switching with Alt-Tab and direct keybinds

then easier integration with external tooling since it's easier to detect the app in a dedicated window

Then freer keybindings not conflicting with the terminals'

Terminal is a poor restricting UI for any complex app such as the text editor