12 ms·
Nvui: A NeoVim GUI written in C++ and Qt
- black_13 5y agoWow
- lbotos 5y agoIf you want a vim GUI, Onivim 2 is usable and doing a Vim GUI slightly differently (made libvim, and is doing the UI in Revery an OCAML offshoot). I've been using it a few hours each week to edit python/ts/js/md and it's worked surprisingly well. This also looks really good, and I'm happy to see next-gen vim get love.
- LordRishav 5y agoOni looks nice, but is a non-free program with an EULA so I would rather not use it. However it also states that a release is relicensed under the MIT/X11 license after 12 months from its release.
- alpaca128 5y agoCan you explain why I'm supposed to "pre-order" a license key for a Vim-like editor that doesn't yet support .vimrc files? How is it better than this with NeoVim's LSP and treesitter support?
- ccakes 5y agoOnivim isn't trying to be a vim GUI, it is it's own product that is something like VS Code on top of libvim. They opted to go with the VS Code extension ecosystem which necessarily excluded vim extensions. Not affiliated with the project, or even really a user, but bought a license a while ago to support what I still think is a nice idea.
- okasaki 5y agoIt seems neat, though I would never seriously use an editor that I couldn't run in a terminal. Too much of my work happens remotely. Additionally, in my mind a terminal serves a similar role as plain HTML web pages - it constrains what can be done and I am extremely used to it, which makes it very easy and quick to use. On the other hand in a GUI editor (or a JS-heavy web page) it feels that it has more possibilities, which allows authors to customize things in ways that I don't expect, which can take away from my focus on what I'm doing. There's also the additional curse that because of these possibilities, authors seem eager to change things more often, whereas I value stability.
- Santosh83 5y agoIsn't this just a UI layer for NeoVim, which you can easily switch to text when going remote?
- hinach4n 5y agoIt is, OP is overreacting. This is just a front end. I'm pretty sure it just uses the neovim binary on your system in headless mode.
- cycomanic 5y agoThese are all valid points, but I don't think they apply here. This is a GUI frontend for Neovim, which is a terminal editor. So yes you can use the the editor in the terminal. This just gives you the option to run the same editor in a GUI for when you need it.
- jcelerier 5y ago> Too much of my work happens remotely. ... You know that GUI apps are able to edit code over SSH too, right ?
- erikbye 5y agoExactly. Jeez. I'm not even shocked anymore, at how out of touch and stuck in their ways some people are. If this is your workflow: terminal; ssh <remote server>; vim <file> ...
- mihaifm 5y agoCould this support a code map? That would be a killer feature for any vim/neovim UI.
- rashil2000 5y agoYou can already do that inside regular (neo)vim, using https://github.com/wfxr/code-minimap https://github.com/wfxr/code-minimap
- mihaifm 5y agoI’ve seen it, it’s really innovative but I was hoping for a more traditional one that has actual characters.
- rashil2000 5y agoI'm sorry, I might have been misinterpreting, could I you explain what you mean by actual characters? Even VSCode's minimap draws some shapes, but they're too small to discern any characters.
- dkersten 5y agoVS Code gives you a choice between actual characters and coloured blocks. Actual characters might or might not be discernable, it depends on how large you set your minimap. I personally make mine quite small, so there's no value to actual characters, but if I make it larger, I can make out enough of them to see additional structure.
- mihaifm 5y agoIn VSCode it actually draws the font with very small size. It might look better on larger resolution displays. You can also increase the size with "editor.minimap.scale": 4
- teamspirit 5y agoThis looks very interesting. Are there any advantages to using it as opposed to neovim in a terminal? I guess my question can be posed to any gui text editor. Still, nice project!
- cossatot 5y agoI like having gvim or macvim as the default text editor to open files when the are clicked from Dolphin/Finder/etc so that I can read and edit the file with vim and my config, rather than whatever the OS default low power GUI text editor is. Maybe I could rig up something to open a new terminal and then open vim in that but vim in a GUI works quite well.
- alpaca128 5y agoI've been using NeoVide (same idea) for the last few weeks and I've noticed three differences: the colors/font are closer to the intended look, it's got nice smooth (and quick) animations, and it seems like the rendering is faster than in the terminal to a degree it feels more responsive. Overall I like it a lot.
- auxym 5y agoI have not tried this one yet, but what I'd like to see in a nvim gui: - Splits I can drag around to move and resize with a mouse - "Native" window tabs instead of terminal-style tabs - A gvim-style menu bar with some operations for which I can't be bothered to remember the key combination. So, overall, mostly mouse support and better discoverability. I've tried a few though and haven't really found what I'm looking for, open to suggestions :)
- O_H_E 5y ago> menu bar with some operations for which I can't be bothered to remember the key combination. now, that's a good one.
- ComputerGuru 5y agoNvim already supports resizing splits with the mouse. Just :set mouse=a
- knodi 5y agoMac OSX support?
- albingroen 5y agoReading from the v1 release, there are currently only Windows & Linux support. Maybe you could build it from the source code though. (edit) Building for MacOS doesn't seem to work https://github.com/rohit-px2/nvui/issues/20 https://github.com/rohit-px2/nvui/issues/20
- joiguru 5y agoWhat would be the benefits of this over neovim-qt?
- lambdaba 5y agoThe window animations are really nice: https://github.com/rohit-px2/nvui/blob/main/assets/display/videos/windows.gif https://github.com/rohit-px2/nvui/blob/main/assets/display/v... I wonder if it's possible to reduce duration slightly. Personally I find animations useful and a great improvement to UX but I prefer as short durations as possible. I also set 0.5x animation duration / scale on Android and it makes it feel much snappier, but don't like outright disabling them.
- systemvoltage 5y agoYes, if they're less than 100ms, sure - animations provide context to what's happening on the screen (human vision system likes to persist objects). Any longer, and I want to throw the computer out of the window.
- RayVR 5y agoI’m not a UI/UX expert but here’s my 2¢ from limited work in this area. It depends on the type of animation and the platform. A fade in that’s 250 or even 500ms can be a nice effect on mobile when it’s not blocking other interactions. 100ms is too short to be noticeable for many things and depending on the screen refresh rate and distance for motion animations you will end up with large jumps.
- systemvoltage 5y agoI disagree. This is exactly what’s wrong with modern UX/UI. I abhor fading animations, they’re just decorations.
- chrismorgan 5y agoEww, a 20MB GIF with harsh dithering artefacts. And then another 22MB in two more GIFs. All in the repository. (a) GIF is not the right format here, use a video format because it’ll produce a visually superior result (proper colour, no dithering needed—not that it actually is even with animated GIFs) and much more usable result (not autoplaying if the user agent’s configuration says not to, allowing scrubbing, showing how long the video is rather than you having to guess “is it still going, or did it start again?”, that kind of thing) in significantly less space. (b) Things like this emphatically do not belong in the code repository, because they bloat things forever despite being for demonstration only. A repository that would have been 1.0MB and cloned in well under a second is instead 46.2MB (43.8MB of GIFs and 2MB of PNGs) and took me about fifteen seconds to clone (cloning repositories from GitHub is always slower than you’d expect when you’re on the other side if the world, in AU/NZ).
- hkmaxpro 5y agoNeovide has many similar features as Nvui and is written in Rust https://github.com/neovide/neovide https://github.com/neovide/neovide
- jchook 5y agoHappy to see they finally ported from vulcan to openGL[1], but it's not released yet. https://github.com/neovide/neovide/issues/491 https://github.com/neovide/neovide/issues/491
- spiderice 5y ago> Happy to see they finally ported from vulcan to openGL Why are they doing this? And why does it make you happy? I don't know much about the difference, but from what I've seen it seems like a lot are going the other way (OpenGL -> Vulkan). For example, isn't Godot 4 going to be primarily on Vulkan whereas the current version is all OpenGL?
- hkmaxpro 5y ago> Why are they doing this? The author complained that using Vulkan and the skulpin library “greatly increased the difficulty for some platforms of installing the correct graphics drivers” https://old.reddit.com/r/neovim/comments/mvoimq/is_there_any_gui_like_neovide_but_more_stable/gvdkf2o/ https://old.reddit.com/r/neovim/comments/mvoimq/is_there_any...
- zamalek 5y agoVulkan is a side-grade to OpenGL. For games, Vulkan is the best tool. For a text editor, OpenGL is the better of the two. Very different use cases.
- kaladin-jasnah 5y agoWhat's up with the huge cursor in insert mode in some of the GIFs[0]? [0] https://github.com/rohit-px2/nvui/blob/main/assets/display/videos/caretextend.gif https://github.com/rohit-px2/nvui/blob/main/assets/display/v...
- sullyj3 5y agoJust above the gif: > Customizable cursor height (see :h NvuiCaretExtendTop and :h NvuiCaretExtendBottom) Ex. :NvuiCaretExtendTop 200, :NvuiCaretExtendBottom 100 (see below)
- notme77 5y agook, but why?
- AprilArcus 5y agoright? does it do something other than e.g. ` [ctrl-v]3jI ` ?
- kevincox 5y agoI would assume to make it easier to find? I do something similar by setting cursorline and cursorcolumn. It gives me a (more subtle) full-file crosshair showing where the cursor is.
- rohit-px2 5y agoNo reason, I just used to use Sublime Text and liked how the cursor appeared bigger than the text.
- TaupeRanger 5y agoWhat's the elevator pitch for Neovim over regular Vim or GVim? I see verbiage about extensibility and modern guis, but has any Vim user actually seen real world benefit after switching to NeoVim? Is it all just icing?
- 41b696ef1113 5y agoI am willing to take the philosophical stance that even if NeoVim was only a 1:1 feature parity of Vim, it would still be a GoodThing. We need to find a way to dig ourselves out of endless backwards compatibility and advance the state of software. Supporting 8.3 filenames no longer has its place. This[0] post about the early days of NeoVim development made some interesting points about Vim, but one choice quote I recalled and had to google, > Some of Vim’s source code isn’t even valid text. It’s not ASCII or UTF-8. The venerable file can’t figure out the encoding... Re-building things to a more solid foundation enables new workflows that are currently challenging. As a Vim user, I have longingly looked at the Emacs ecosystem, with its saner extension language (though Emacs lisp has its own historical baggage weighing them down). Once Lua becomes the default, I expect to see new evolution in features that would otherwise not have made it to the Vim scene. At worst, I can imagine VSCode javascript plugins get transpiled to Lua to run within NeoVim. [0] https://geoff.greer.fm/2015/01/15/why-neovim-is-better-than-vim/ https://geoff.greer.fm/2015/01/15/why-neovim-is-better-than-...
- yoyohello13 5y agoThere has been a lot of talk around here lately about modernizing emacs. It really seems to me that neovim is shaping up to be the new “modern” emacs. With full lua integration, lsp, gui clients, and projects like neorg it’s getting a lot closer to building its own emacs like ecosystem.
- alpaca128 5y agoIt does help that the project is a tiny fraction of the size. I hope it mostly stays that way despite the odd new feature.
- 5y ago
- parhamn 5y agoI love vim, but I can no longer see the case for pure-vim (besides devops/infra work where the most basic vim setup is usually enough) in the world of IDEs + Vim mode. Ive been down the rabbit hole of setting vim’s code intelligence up (ale and all that), in the end it felt brittle and not good (vs perfect completion for golang/typescript in my IDE). So Im curious, whats the case for going pure windowed vim like this?
- cweagans 5y agoHave you used vim since language servers became a thing? I was in the same boat as you for a while, but I've been consistently impressed with how far the language server ecosystem has come. Yes, there's still the cost of setting it up in the first place still. That comes with the territory. There are some decent neovim distros out there (lunarvim, nvchad, etc) to get you started though!
- bickfordb 5y agoI'm suspect about this gui project, but I setup LSP + neovim for a rust project last week and I think it is significantly better than any IDE I have seen, super productive
- jchook 5y agoCoc[1] might change your mind. Neovim 0.5 now has a built-in language server, and 0.6 will have even more language features available via tree-sitter integration. The best is yet to come. 1. https://github.com/neoclide/coc.nvim https://github.com/neoclide/coc.nvim
- hvasilev 5y agoIt does not change the mind. It is not good. Code completion in vim/neovim is trash across the board.
- wodenokoto 5y agoI think this is fantastic! It’s exactly these kind of things I was hoping to see when neovim was announced. No vim emulation in your GUI editor, but actual vim in your editor.
- WhyNotHugo 5y agoI don't quite get what the advantage / goal of this is. I find the fact that neovim runs in a terminal an advantage; they share font configuration and colour and other settings, and I can quickly jump in and out of nvim from a terminal. Having it run in a separate window just means I now have an extra window lying around (the terminal where I typed `nvui`). And smooth scrolling works on regular neovim with https://github.com/psliwka/vim-smoothie https://github.com/psliwka/vim-smoothie
- da39a3ee 5y ago> the terminal where I typed `nvui` Maybe you'll find some advantages in having a long-running editor process, rather than starting one from the terminal whenever you want to edit? For example, ctr+click on a compiler error message in the terminal could open the file at the correct line in the (already running) nvui process.
- 7kay 5y agoI guess this is a thing you could achieve with neovim-remote[1]. My main use case for it avoiding nested neovim processes in the inbuilt terminal, though [1]: https://github.com/mhinz/neovim-remote https://github.com/mhinz/neovim-remote
- chrisseaton 5y ago> And smooth scrolling works on regular neovim with https://github.com/psliwka/vim-smoothie https://github.com/psliwka/vim-smoothie Doesn't 'smooth scrolling' mean scrolling in increments less than a full line, to avoid the janky jarring jump from one line to the next? I don't get how you can do smooth scrolling in a terminal interface? The screenshots in that link aren't smooth - they jump whole lines at a time, unlike the screenshots you can see on the NeoVim page.
- MontyCarloHall 5y ago> I don't get how you can do smooth scrolling in a terminal interface? Via a terminal bitmap rendering protocol like sixel [0], or KiTTY’s terminal graphics protocol [1]? I wonder if a library like notcurses [2] could allow for efficient rendering of text to a terminal graphics framebuffer? [0] https://saitoha.github.io/libsixel/ https://saitoha.github.io/libsixel/ [1] https://sw.kovidgoyal.net/kitty/graphics-protocol/ https://sw.kovidgoyal.net/kitty/graphics-protocol/ [2] https://github.com/dankamongmen/notcurses https://github.com/dankamongmen/notcurses
- devilduck 5y agoThe worst part about this is the build process otherwise it's cool and good and I'll be happy to see this evolve
- npigrounet 5y agoJust curious: why Qt and not web technologies?