9 ms·
Neovide – A simple, no-nonsense, cross-platform GUI for Neovim
- frankjr 3y agoIf you're wondering why you might want to use this instead of just launching Neovim directly in a terminal, then for me the answer is performance. Everything is silky smooth, much smoother than in Kitty/Alacritty. And to disable those annoying animations, just put this in your config. vim.g.neovide_cursor_animation_length = 0 vim.g.neovide_scroll_animation_length = 0
- snapplebobapple 3y agoAs an alternative, try foot. I love that terminal, it just works.
- esamatti 3y agoI've actually found the animations helpful even thought was initially skeptical: Because it visualises the vim motions it makes it much clearer what is happening. Especially if you make a mistake you'll see it much more clearly what it actually did. Also when making longer cursor jumps it is easier to see where it went. I'm sure they will help a lot also when learning Vim for the first time. But the be fair, the default animations are bit much but they can be toned down.
- wadim 3y agoHow do you handle multiple projects at the same time, with a tiling window manager? The nice thing about the terminal is the possibility of having layouts, tabs and so on. Or using tmux/zellij with a terminal that doesn't support these more advanced features.
- ludsan 3y agoAs a data point, I'd like to chime in here. I have been a 15 year user of tmux (and screen before that) and never thought I'd change my development habits. Over the holidays I decided I would do one of those once-every-five-years upgrades to my vim setup as I had accrued dozens of vendored plugins in normal vim and wanted to see what the big deal with neovim was. I bit the bullet and evaluated some of the "distributions" (AstroNvim and kickstarter) and played around with all the new lua plugins that I had never thought I needed (why use telescope when FZF-vim worked so well?). Anyways, after a month of tweaking and absorbing, I found myself running Neovide only, and doing something I never thought I'd see, running tmux from within neovim/neovide. I think this only works (for me) because of session management (there are half a dozen plugins for handling quickly changing 'workspaces') and because the built-in terminal (with a very useful plugin called toggleterm: https://github.com/akinsho/toggleterm.nvim https://github.com/akinsho/toggleterm.nvim) works so well. I have not stopped using tmux and layouts, and it sits in another fullscreen iterm2 workspace, but I find that I now spend 90% of my time using a fullscreen neovide and summoning/toggling tmux momentarily for running commands. Of course, the caveat here is that my preferred mode of operation is being fullscreen as often as possible. I think if your preferred mode of operation is to always see splits then running neovim from the terminal within tmux is still the way to go. As for why I like neovide? I find the animations, when tweaked to be less 'cool' are extremely useful to see where the cursor jumps to. I am also a huge fan of the fact that I can finally use 'linespace' to put some space between my lines of code -- it is an aesthetic I didn't realize I wanted.
- unshavedyak 3y ago> Of course, the caveat here is that my preferred mode of operation is being fullscreen as often as possible. I think if your preferred mode of operation is to always see splits then running neovim from the terminal within tmux is still the way to go. Oh interesting, it sounds like it can't do permanent splits? Very odd to me.
- nerdponx 3y agoIsn't that just the same as any other program? If you group your projects into workspaces/tags/virtual desktops. If your workflow is already entirely terminal-oriented with something like Tmux, then yeah, this won't really fit into your workflow.
- frankjr 3y agoI just open multiple Neovide instances. In each instance I usually have the screen split in the middle (two buffers at the same time), with the one on the right often replaced with the built-in terminal emulator.
- benhurmarcel 3y agoI don't get the point of tmux when you're running locally. We have a desktop environment whose entire point to to manage several instances on your screen already. Isn't it better than using a multiplexer?
- from-nibly 3y agoI use a quake style terminal. Hit f12 and the terminal appears no matter what desktop is focused. If I didn't use that I could definitely see just using my tiling window manager to manage splits. But as it stands I want all my terminals to appear and reappear with one key combo.
- the_duke 3y agoI just tested again after a while. Input latency is very notably worse than in the terminal, at least on Linux + sway. (alacritty or kitty)
- lambdaba 3y agoSublime is the king of latency IME
- GrinningFool 3y agoIf you reduce the cursor animation duration or disable it, the latency improves quite a bit.
- the_duke 3y agoYeah I set the animations to zero, the latency is still quite a bit higher. One of the main reasons I use neovim is because everything feels so instant.
- CyberDildonics 3y agoWhy does the cursor animation dictate input latency?
- GrinningFool 3y agoNot involved in the project, but it looks like it doesn't render the character until the cursor arrives at the location the character belongs at.
- behnamoh 3y agoI actually liked those animations and enabled a similar functionality in VSCode: "editor.cursorSmoothCaretAnimation": "on",
- chii 3y agoDoesn't neovim have a QT ui that you can run with instead of the terminal emulator?
- sigzero 3y agoThere are a bunch of them. None are really good IMO.
- tux1968 3y agoYes: https://github.com/equalsraf/neovim-qt https://github.com/equalsraf/neovim-qt There are quite a few GUI front-ends options available: https://github.com/neovim/neovim/wiki/Related-projects#gui https://github.com/neovim/neovim/wiki/Related-projects#gui
- abhinavk 3y agoYeah but I don't find any upsides compared to nvim running in a modern terminal emulator like Konsole, Alacritty or WezTerm.
- nerdponx 3y agoIt's not officially part of the Neovim project. However they distribute it with the Windows installer. Neovim-Qt and Neovide both work the same way, one is not more privileged or official or well-integrated with Neovim than the other.
- ajitid 3y agoFor the commenters here: do we have something like VimR [1] for OSes other than the Mac that provides a file explorer sidebar with smaller font size (probably sans)? [1]: https://github.com/qvacua/vimr https://github.com/qvacua/vimr
- deleted 3y ago[deleted]
- optymizer 3y agoThe effects and animations remind me of the cool window effects in Gnome/KDE, back when they were first made available, like the window burning down completely when closing. Cute, sometimes very cute, but ultimately distracting and only adds a delay to the intended action, so after a week the novelty wears off and I usually revert back to the old UI. Typically "no-nonsense" UX (the kind used to get stuff done) has minimal animation, if any. The whole point is to focus, not to get distracted by railgun animations. The feature list seems to be mostly eyecandy and emojis.
- revscat 3y agoSure. But it also brings joy.
- eviks 3y agoThe point of railgun animations is not to distract you, but let you focus faster since it shows the path between the start and the end, which is especially helpful when cursor travels large distances. So it adds no delay, has a very focused practical purpose, in what way is this "nonsense" UX preventing your from getting stuff done?
- osigurdson 3y agoI just use vim included with git for Windows. It seems to work fine.
- cassepipe 3y agoNice. Can it be installed alongside neovim without picking its configuration ? Didn't see the answer in the FAQ
- cbm-vic-20 3y agoI think the answer to your question is "yes"; Neovide is just a client for an underlying Neovim process. That process can be local or remote.
- frankjr 3y agoYou could either branch your Neovim configuration on `vim.g.neovide` [0] or start Neovide (and the underlying Neovim instance) with a different config file by setting XDG_CONFIG_HOME. https://neovide.dev/configuration.html#hello-is-this-neovide https://neovide.dev/configuration.html#hello-is-this-neovide
- OJFord 3y ago> Where possible there are some graphical improvements, but functionally it should act like the terminal UI. If those are barely worth mentioning (and still not to say what) .. what is the point over 'the terminal UI'? Features page is better: https://neovide.dev/features.html https://neovide.dev/features.html - Ligatures: ok, nice, possible in terms too (hopefully Alacritty one day) - Animated cursor: I would disable that for sure - Smooth scrolling: I would disable that too (surprised anyone would want it in neovim actually - do people scroll? I navigate line-by-line (or many lines) so it seems natural that the rendering should be the same, otherwise it's just a permanently clipped top and bottom line) - Animated windows: ..that maybe looks a bit smoother, hard to tell without side-by-side, it's not horrible anyway - Blurred floating windows: that's nice - Emoji support: if you want it you probably have font configured anyway Seems like it's for people who are reluctantly in a terminal, to position it more like a VSCode/Sublime alternative in an appy sense, there's not really much of an up-sell here for anyone familiar and happy with vim/neovim in the terminal IMO.
- deleted 3y ago[deleted]
- saintfire 3y ago> Ligatures: ok, nice, possible in terms too (hopefully Alacritty one day) I wouldn't hold my breath. Seems like its getting the iPad calculator treatment[0]. Which is to say rather than ship something working that can be improved, they're leaving a UX void. [0] https://github.com/alacritty/alacritty/issues/50 https://github.com/alacritty/alacritty/issues/50
- OJFord 3y agoYeah, that's the issue I was alluding to ('one day'). Note the original author replied immediately saying yes would love to, ... but also that was over 7y ago now. But not a flat no, not a won't-fix; they don't leave requests hanging around that they have no interest in supporting. Edit: and in fact, I'd forgotten all about it, but you can tell I'd seen that issue because it was locked on my suggestion ;)
- 3y ago
- pjmlp 3y ago[flagged]
- deleted 3y ago[deleted]
- QuadrupleA 3y agoI used this as my daily driver for several months last year - it was nice and fast, and I liked the cursor animations actually, but I ended up dropping it because of really strange window sizing problems on Windows with multiple monitors and multiple DPIs.
- Exuma 3y agoThere has been a large amount of open source to improve window management, I'd say check again!
- metadaemon 3y agoThis is also occurring on my Mac
- eviks 3y agoIs there any complicated no-nonsense GUI for Neovim that transcends the GarbageUI of the terminals and, for example, allows you to have advanced keybinds to invoke various vim actions (like enter insert mode on tap I and exit it on hold I or modtap J+I)?
- deleted 3y ago[deleted]
- worksonmine 3y agoWhat's wrong with the native keybindingings? The simplicity to bind any command, even external programs or scripts is one of the best features of vim. For example I have leader+m to compile based on my current filetype, leader+d opens the binary in :termdebug (gdb) and many, many more. I keep adding to my config anytime I get sick of a repetitive action. You don't need anything fancy to do what you're asking, except for holding a key, which AFAIK isn't possible. Some bind j+k to esc in insert mode. I don't like messing with the characters in insert mode because it creates latency and fucks with my typing but I swap esc and caps since esc is my most used key, and caps my least.
- eviks 3y agoSo you use your most used key with a sidewise motion of your weakest finger of your weakest hand? That's just bad ergonomics, and that's what's wrong with the native keybindings - they are simply awful ergonomically JK is not the solution as your mentioned yourself since it's within the same simplistic/terminal-limited key input handling (also, it fails if you speak more than one language where JK is common in regular words, and also fails if you speak just one language since you can have variable names or other abbreviations/terms with JK in them). There are ways to avoid any latency/typing sideffects, but as far as I know that is only possible by eschewing the "but functionally it should act like the terminal UI" maxim, hence the original question whether any GUI app is ready to break off the rusted chains
- worksonmine 3y ago> So you use your most used key with a sidewise motion of your weakest finger of your weakest hand? I'll clarify that for you, my most used individual key. Most of my typing is on the home row. > and that's what's wrong with the native keybindings - they are simply awful ergonomically You asked for a way to bind the keys, you got one. Now all of a sudden your problem is that the default keybindings not being ergonomical. I use vim keys EVERYWHERE to help my RSI, but to each their own. > There are ways to avoid any latency/typing sideffects, but as far as I know that is only possible by eschewing the "but functionally it should act like the terminal UI" maxim, hence the original question whether any GUI app is ready to break off the rusted chains This makes zero sense. My point is that there is no native way to bind hold. The latency comes from vim waiting for either a second keypress to run the binding, or typing the character. You can natively set the delay lower and I do in :termdebug, but when typing it's very noticeable at my typing speeds. You could write a plugin and one probably even exists if you want that functionality. But please, explain how a GUI would solve that in a way a TUI can't. Very curious to hear what you come up with.
- nate-sys 3y agoAlthough I'm happy with my current neovim setup, I do envy the cursor animations in this. Why hasn't a terminal emulator with cursor animations like this been invented yet?
- Quot 3y agoIf I had to guess, it's because terminals don't know what a cursor is. From the terminal's perspective, it is just told to print a solid blinking block at a certain location. Neovide knows what the cursor is because it is communicating directly with Neovim. A terminal could do this, but there would need to be direct integration into Bash, ZSH, etc.
- j4cobgarby 3y agoYeah true, maybe could be done with heuristics though - in nearly every case, there's only one single blinking block, which is the cursor. However, not everyone has their cursor configured to blink, and there are cases where there are other blinking blocks. Not sure how to deal with that...
- deleted 3y ago[deleted]
- gpanders 3y agoTerminals do have a concept of a cursor (there are dedicated control sequences for cursor management). There's no fundamental reason a terminal emulator couldn't implement an animated cursor like this, my guess as to why no one has done it is simply that it's not a very commonly requested feature.
- Quot 3y agoYou're right! That's pretty neat. I always thought terminal emulators were just simple text displays. It looks like Wezterm even has preferences for how cursors are displayed. https://wezfurlong.org/wezterm/config/lua/config/cursor_blink_rate.html https://wezfurlong.org/wezterm/config/lua/config/cursor_blin...
- danielbarla 3y agoI'd be interested in giving this a try, however it seems to be completely resistant to the tiling window manager I use on macOS, Amethyst. It's fairly odd; I have not encountered another app that does this.
- ahub 3y agoToo bad the background color is deprecated, I'd like it better with a good ol solarized theme.
- Conscat 3y agoI'm not certain what "the background color is deprecated" means but I really don't like the sound of that.
- ahub 3y agoWell the manual setting for the background color doesn't seem to work anymore except for Apple products: https://neovide.dev/configuration.html#background-color-deprecated-currently-macos-only https://neovide.dev/configuration.html#background-color-depr...
- nerdponx 3y agoIt sounds like it's not deprecated, they've moved it out of the config file and into a Vim global variable. That's probably meant to be a feature, in order to work with changing color schemes.
- Exuma 3y agoThat was a pseudo-background hack because of a neovim upstream issue I believe. Now it reflects the REAL background color
- NeutralForest 3y agoJust use Emacs with Vim bindings (evil-mode) then ;)
- sshine 3y agoI'm a big fan of Emacs and evil-mode, but I wouldn't say it qualifies as "no-nonsense". :-) It took me the better part of a weekend to get Doom Emacs (which defaults to evil-mode) working on par with VSCode.
- NeutralForest 3y agoThat's very true, I would never call Emacs "no nonsense" at any point haha
- binary132 3y agoIt’s a bit weird to me that this is specifically for neovim when it kinda seems like a generic piece of glass for “some TUI” that in this case happens to be nv. Maybe I missed the point.
- HellsMaddy 3y agoNeovim has an RPC API specifically designed to allow GUIs to render it outside the terminal. Neovide isn’t treating it as a generic TUI. https://neovim.io/doc/user/ui.html https://neovim.io/doc/user/ui.html
- nerdponx 3y agoTheoretically you could support the same RPC API from a completely different text editor, and thereby use any Neovim-compatible frontend . That sounds like a nightmare of course, but it's technically possible.
- anpep 3y agoShould I take this opportunity to switch to Neovim for once? I've attempted using vim/neovim/emacs, etc. many times but it's just so confusing to me. Why would I go over the trouble of debugging my editor for simple stuff like having LSP completions and semantic highlighting? It's insanely difficult for me to wrap my mind around vim packages, configs, etc., when VSCode/GoLand/et al. do a pretty darn job being decent editors that you don't need to hack on and just work out of the box. Don't get me wrong, I'm not throwing shade on vim/emacs, I'm just wondering what am I missing since everyone's been super happy and productive with vim for ages, and if I'm approaching these tools the wrong way...
- wint3rmute 3y agoI suggest you try something like LunarVim[1] or NvChad[2] for a ready-to use IDE-like neovim configuration. I had the same problem with configuring (neo)vim, it's simply too much work to get a reasonable IDE experience. Using an already well tested and documented configuration helped me to make the switch. [1] https://www.lunarvim.org/ https://www.lunarvim.org/ [2] https://nvchad.com/ https://nvchad.com/
- cassepipe 3y agoIf only doing C and C++ dev work you can get pretty far with a very minimal vim config though But yeah, webdev had me switch to Lunarvim (my favorite among all those nvim distros)
- retrochameleon 3y agoI tried both and ended up using AstroNvim
- lenkite 3y ago[3] https://www.lazyvim.org/ https://www.lazyvim.org/
- EasyMark 3y agolazyvim is definitely the one I found easiest of a bunch of these. I've been using it for a while now, I haven't tried in neovide though, I just did and it ran but when I did an update there was a compilation error (on mac). So maybe avoid an update there? :) It was easy to fix in standard iterm2 though (just resync).
- behnamoh 3y agoStopped working on Apple silicon macOS Sonoma.
- eterps 3y agoI am not too impressed by its features. The most useful thing to have would be mouse hover support (f.i. for showing LSP based info).
- planede 3y agoYou can have hover support even in a terminal nvim instance, so maybe that's just not a distinguishing feature.
- Exuma 3y agoNeovide is SUPER awesome. I use it daily and I absolutely LOVE it
- unstruktured 3y agoWhile we are on the subject, there's also neovim-qt: https://github.com/equalsraf/neovim-qt https://github.com/equalsraf/neovim-qt
- bloopernova 3y agoThat animated cursor move effect is very interesting! I wonder if it could display extra information for the user, with some tweaking. Trying to think of some things that we do subconsciously while navigating code... Moving across a code block with "{" and "}" could highlight the parentheses and the link between them, for a fraction of a second. Highlighting or landing on a variable could send a tiny zip of pixels towards the nearest uses of that variable. I've wondered sometimes if making the current function or block pop a little brighter than its surroundings could also give your subconscious mind a bit more information. All these would have to be incredibly fast animations, just a few ms would be great for me. I loathe the slow-to-me animations in Android, and always use the dev tools to speed them up.
- thetic 3y agothese kinds of things are already possible (albeit without animation) with native features: - https://neovim.io/doc/user/pi_paren.html https://neovim.io/doc/user/pi_paren.html - https://neovim.io/doc/user/lsp.html#lsp-highlight https://neovim.io/doc/user/lsp.html#lsp-highlight
- unshavedyak 3y agoI wonder.. anyone have recommendations for going back to [Neo]Vim from Kakoune/Helix? I was a Vim user for ~8 years, but switched to Kakoune for the selection first editing style. I vastly, vastly prefer it. However i'm extremely jealous of Neovide. As much as i love Terminal Editors, i feel like Terminals themselves have been an annoyance for a long time for me. Despite having solely worked in them for ~15 years, i don't like them at all for my primary editor. I just miss too much.
- unshavedyak 3y agoOh, neat: https://github.com/helix-editor/helix/issues/39#issue-908964175 https://github.com/helix-editor/helix/issues/39#issue-908964... Looks like a Neovide author wants to abstract Neovide to support other editors! Imagine that's a big lift, though.
- deleted 3y ago[deleted]
- ljouhet 3y agoNeeds nvim version 0.9.2 or higher: https://github.com/neovim/neovim/blob/master/INSTALL.md https://github.com/neovim/neovim/blob/master/INSTALL.md
- vouaobrasil 3y agoI love Vim, but I have to admit I lost interested in dedicated Vim and Neovim programs as VSCode has a pretty good Vim emulator.
- hollerith 3y agoMost of these things don't have any way to configure margins. Does Neovide? Books (made from paper) invariably have a region with no printing on the left and right sides of every page -- margins. But users of most text editors are tougher than that: they don't need margins apparently. I want the leftmost and rightmost parts of the editor window to be able to be blank margins. I'm on Emacs currently because it is easy to configure margins (at least in graphical Emacs) but it would be nice to have another option.
- blindstitch 3y agoThis plugin does a decent job of creating margins, but can only display one text buffer at a time. https://github.com/folke/zen-mode.nvim https://github.com/folke/zen-mode.nvim
- ivanjermakov 3y agoAnother good plugin for this is https://github.com/shortcuts/no-neck-pain.nvim https://github.com/shortcuts/no-neck-pain.nvim
- ahub 3y agoMan I'd love to have a screenshake setting for that