10 ms·
Oni: Modern Modal Editing – Powered by Neovim
- bla2 9y agoThis looks really cool. I tried it on my macbook, and for some reason I can't keep 'j' pressed to scroll down - I have to press it once per row. This works fine in MacVim and Terminal.app vim. Does anyone know why this won't work?
- bsmith89 9y agoThe Mac install guide [1] references needing the following in order to use "PressAndHold". > To enable key repeat when pressing & holding a key in Oni, write the following in your terminal: defaults write com.extropy.oni ApplePressAndHoldEnabled -bool false [1]: https://github.com/onivim/oni/wiki/Installation-Guide#mac https://github.com/onivim/oni/wiki/Installation-Guide#mac
- ziikutv 9y agoLooks great. Two questions: 1. I wonder though why you/team didn't opt for extending the vim emulation - via a plugin - on VS Code. Did the exposed API limit you from doing so? Edit: Having used the extensions of VSCode, I am wondering if that is the case. 2. Does it support installation of sublime/atom/vscode plugins?
- xconverge 9y agoAs a developer of the VSCodeVim plugin, Oni is a great inspiration and we are hoping they pave the way for the Neovim API (which is starting to mature). We have started using neovim for a few things, the command line for example. So while we have started getting our feet wet, hopefully something like Oni (or Oni) replaces us...soon :)
- ziikutv 9y agoHey xconverge. Just an update, I reinstalled the plugin and configured it to work with neovim and am very happy with the results. Thanks for contributing to the VS Code ecosystem.
- bryphe 9y agoThanks xconverge, it's great to hear from you and appreciate the kind words! I'm a big fan of the work you're doing as well - really impressed with the VSCodeVim plugin.
- bryphe 9y agoAuthor here - that's a great question on VSCode. I actually tried really hard to get my 'Vim workflow' to work with VSCode - even creating a plugin for relative numbering. I'm a big fan of the work that the VSCodeVim / VSCodeNeovim teams are doing as well! There were two challenges I faced: 1. Performance - I'm very sensitive to typing latency. I wanted to leverage Neovim to its full potential. IMO, there is a tremendous benefit to having the buffer management delegated to a native layer (similiar to what the Atom team is exploring with Xray). We also use a canvas renderer for the editor surface, unlike VSCode/Atom which use the DOM. We still have low-hanging fruit to address in terms of performance, but we gain significant benefits from this architecture, vs other electron apps. 2. Functionality- I wanted to explore some new input methods, inspired by browser plugins like Vimium and cVim. I also wanted to explore ways to gamify the editor experience and make it fun to learn modal editing and become more productive. I found VSCode's API's limiting in these aspects, and wasn't able to realize it within the confines of their API. I believe VSCode is making the right set of trade-offs for their user base - there is benefit to the sandboxing of the APIs as it helps lift the overall quality of plugins. Every editor is a different exercise in trade-offs, and I wanted to explore a different set, targeting a more niche group. The VSCode team has done awesome work and we've been able to leverage several core components - their language server client, their snippet parser, their textmate highlighting parser / engine. It's wonderful that they are contributing so much to the open source community. I hope to hook up their debug adapter protocol in the near term, too! To answer your second question - we'd like to support VSCode plugins at some point. They have a great ecosystem of plugins. We support their snippet syntax and textmate highlighting syntax, but hopefully we can have more a complete compatibility story. Still have a lot of work to do on our plugin story in general :)
- ziikutv 9y agoThanks for a response. I just installed it and do think that it is missing a few features that are important to me (as in, these are my opinions): 1. Syntax (missing for Elixir) 2. Shortcuts (even preferences shortcut is missing) 3. Easier configuration API; I think currently, you give us the "entire React app", rather get something simple. I have the application downloaded; assuming you have autoupdates. I will keep an eye out; excited to see where this goes.
- chc4 9y agoIt says it's powered by React and (presumable) Electron - does it have the same kind of issues that Atom does? Can it open big files, how responsive is it, etc. How do plugins work? Do neovim plugins work out of the box with Oni, do you have to write a wrapper, or are they completely incompatible? This is really the make or break part of it.
- bringtheaction 9y ago> Can it open big files Yes it should be able to do that. Neovim runs separately from frontends like the one in the OP. https://github.com/neovim/neovim/wiki/Plugin-UI-architecture https://github.com/neovim/neovim/wiki/Plugin-UI-architecture
- deleted 9y ago[deleted]
- pault 9y agoBy default it doesn't load your init.vim, but if you change that flag in the config it will behave exactly like your regular neovim install (since that is in fact exactly what it is: a very light canvas renderer wrapped around neovim). I have been using it for a couple of weeks with all of my vim plugins with no issues (ctrl-p, buffer gator, easy motion, etc). Edit: it's worth pointing out that while the rendering is done with electron/canvas, everything else is delegated to neovim. I haven't noticed any slowdown with 1000+ line files, but if you're talking tens of thousands... maybe.
- jimnotgym 9y agoI don't have any problem with 1000 line files in Atom either. It sucks at 100,000 line files, but I only ever open them in an editor by accident (Atom gives a warning). That is what grep and tail are for
- bryphe 9y agoIf you're comparing Oni to Atom, the architecture is actually quite different. Oni uses Neovim at the core to manage buffers & buffer manipulation (in other words, a native layer vs JavaScript in Atom) - this is a major benefit when working with large files. In addition, Oni uses a canvas renderer for the editor surface vs the DOM used by Atom. Together, these significantly improve the responsiveness of the tool. Architecturally, Oni is more similiar to the Xray project being investigated by the GitHub team: https://github.com/atom/xray https://github.com/atom/xray. Most neovim plugins work great with Oni :) Just set the `oni.loadInitVim` configuration value to `true`: https://github.com/onivim/oni/wiki/Configuration#oni https://github.com/onivim/oni/wiki/Configuration#oni
- ausjke 9y agonot really impressed, quite far behind from geany and vscode, vim is handy enough too, so what's the selling point that I have missed?
- bastijn 9y agoYou are comparing an alpha/beta with a full product. The selling point is the future where Vim becomes a native integration in your IDE (or actually the other way around) instead of a plugin which is never completely supporting all Vim options. Or at least that’s my take on it.
- matado 9y agocomoecicirra keia
- justinmk 9y agoThe project README.md doesn't do justice to the improvements that Oni has been pumping out. Some new stuff in the unreleased/development version (hidden behind feature-flags): * Keyboard-driven navigation of embedded web browser: https://twitter.com/oni_vim/status/977280220234268673 https://twitter.com/oni_vim/status/977280220234268673 * Live reload with embedded browser: https://twitter.com/oni_vim/status/976502172891299840 https://twitter.com/oni_vim/status/976502172891299840 However personally I just love the scrollbar: it shows viewport-relative position _inside_ the file-relative scrollbar. (maybe this idea was borrowed from some other IDE, but I haven't seen it before.) P.S.: Yes, it's electron, but if you're not using terminal Vim/Nvim then you already have given up "minimalism" in favor of ... whatever advantage you ascribe to gVim.
- bringtheaction 9y agoThe kinds of things in your comment are the kind of things that make me consider actually installing Oni rather than just going "oh neat, people are making Neovim frontends" like I did when I first saw this post. The only thing that makes me hesitate is because I run FreeBSD on some of my computers and FreeBSD support wasn't quite there yet for Electron apps last I checked. It may have changed in the meantime. If I were to begin using an Electron app, I need to be sure that I will be able to use it on my FreeBSD computers also. This is especially important for editors and IDEs given that writing software is rather central among the things that I do. Currently I use Neovim for a lot of things and I use PyCharm for bigger Python projects. I am wondering though, would it be feasible for one person (me) to rewrite Oni so that one can use it from within their web browser instead of with Electron?
- phonebucket 9y agoThis cropped up several months ago on here, see here for the comments from back then: https://news.ycombinator.com/item?id=15060417 https://news.ycombinator.com/item?id=15060417
- pault 9y agoIt's disappointing to see that 90% of the comments there are people arguing about electron.
- ComputerGuru 9y agoIt’s a valid point. Lots of people use vim for its sheer speed, which you throw out with the bath water when switch to electron.
- toxik 9y agoI haven’t tried the app yet but it seems that this is not true for this editor as NeoVim is the backend, not JavaScript.
- k_ 9y ago1.5G for a fresh startup with no files open is unacceptable when looking for a lightweight editor. That's what made me go back to vim; my previous laptop with 4G RAM couldn't handle vscode + a browser without going out of RAM. I had some hopes for oni but so far it doesn't solve any issue I have either with nvim or with vscode.
- pault 9y agoI've been using Oni for the last few weeks as my daily driver (I liked it so much I signed up as a monthly sponsor), and here's my take on it: It's a fairly new project, but it's under _very_ active development. There's an excellent community building around it and I think we will be seeing some really great progress over the next year. That said, it isn't anywhere close to feature parity with vscode, but the value proposition is: neovim, with vscode compatible snippets and typescript-language-server-driven autocomplete (also works with vanilla JS) out of the box. AFAIK it works with any language language server with a few lines of configuration. I have tried several times to get You Complete Me working to my satisfaction and never quite got there despite spending several weekends working on it. Oni just works. The bonus value proposition is: since it is a GUI wrapper around neovim, you get to retain all of the muscle memory you have built up in your years of using vim, but potentially also get all of the goodies that a graphical IDE like vscode provides. I have tried the vscode vim extensions, and they are really impressive, but they are still limited by the vscode extension api and at the end of the day it's not a real vim. For me, it was just not-vimish enough to constantly interrupt my flow; I believe the original inspiration for Oni was the creator's frustrations with vscode vim extensions. I have been digging into the development process and I've been _really_ impressed with how brilliant and industrious the main contributors are; features are getting added at a breakneck pace. A few things that are in the works: real-time browser pane with auto-refresh (I just tried out the browser feature and it works like it's just another vim buffer... pretty awesome stuff!), markdown preview, and a gamified tutor mode for newbies.
- oblio 9y agoInteresting. I'm a vim/gvim user myself, outside of IDEs, but I've been trying VS Code recently. For some of the stuff I do right now it's not as convenient or stylish as tmux + vim (don't laugh about the stylish part - for example I like a minimalist look and I tend to remove all toolbar and VS Code can't do that; well, it can, in Zen mode, but that's also full screen only, sets some other options I don't want, etc.). For the convenience part, I'd want proper window splits, both horizontal and vertical at the same time and I'd want the panels and windows to become sort of interchangeable. I.e. you'd have 1 universal kind of pane which could host a terminal or a editing window or a problem panel or whatever. If this is stable enough it might be just what I was looking for :) Is this based on the VS Code code base? They'd be getting a ton of high quality UI code for free, IMO.
- theon144 9y agoElectron frontend is precisely the thing I really don't want from a tool like vim...
- oblio 9y agoYou might not, other people might.
- rocqua 9y agoNote that, according to others in this thread, it is not running in full browser mode, with the backend using javascript. Instead, it is using electron just for rendering. People here claim this is a lot better for performance. I've no personal experience to verify this.
- k_ 9y agoI'd tend to agree with GP, but this seems interesting. I'll give it a try, although not with great hopes performance-wise but oni may be a good compromise between nvim and good lsp designed for vscode (like haxe lsp which struggles on nvim).
- cjbprime 9y agoMentioning to perhaps save time for others: just gave it a spin but it looks like there's no eslint support, and my project uses prettier/flow/etc all wrapped up into eslint.
- guessmyname 9y agoRelated projects — https://github.com/neovim/neovim/wiki/Related-projects https://github.com/neovim/neovim/wiki/Related-projects
- notthemessiah 9y agoThere are many projects on that list, if you want a fast native app I would recommend: * neovim-gtk for Linux: supports using a file tree, tabs, a nice open dialogue menu for recent files, support for working with Plug for new plug-ins. * VimR on Mac OS: has a file tree, buffer menu, and support for HTML/Markdown Preview.
- pweissbrod 9y agoWhat is the sweet spot of Oni? If you're looking for a full-blown IDE with vim UI on top then the vs code IntelliJ Visual Studio does reasonably good job at that. If you're looking for a beefed-up version of vim as an IDE spacevim has a package manager and a curated set of over 200 plugins dialed in to work well together for gvim or terminal. I'm just trying to understand the differentiator
- badosu 9y agoI can't speak for the IDE-oriented folks, but as a veteran vim user, never really satisfied with the typographical and UI limitations of the terminal, Oni is the first graphical frontend for vim that satisfies me. Being able to finally have good looking autocompletions, tabs, file explorer and widgets for all related vim features (autocomplete, quickinfo, statusbar, etc) and also having first-class LSP compatibility made using Oni for ~ 6 months a joy. I don't really enjoy the commitment to appease IDE oriented users but it's pretty easy to have a bare configuration (https://github.com/onivim/oni/wiki/How-To:-Make-Oni-closer-to-bare-Vim-experience https://github.com/onivim/oni/wiki/How-To:-Make-Oni-closer-t...) and if it makes it easier and viable for more people to enjoy vim, more power to it! Also, @bryphe is a very considerate project leader, making hard work to understand different use cases and open to new ideas, which makes collaboration very straightforward with the growing number of contributors. I am very excited for Oni's future and am sure that it'll only improve forward.
- wsdjeg 9y agoSpaceVim is not same as oni, oni, is a gui app for neovim. And SpaceVim is a configration for vim/neovim to make it works like IDE, in old version SpaceVim has many plugins, but we just release v0.7.0, and the default plugins is only 50. you can checkout our release note: https://spacevim.org/SpaceVim-release-v0.7.0/ https://spacevim.org/SpaceVim-release-v0.7.0/
- pweissbrod 9y ago@wsdjeg: thank you for your continued work on spacevim
- alexozer 9y agoI do think I might prefer the approach of the asymptotic of development approaching vscode features with a base in pure Vim rather than the asymptotic approaching full Vim compatibility within vscode, and so I really want to like Oni. What immediately struck me as "this project is not ready to use to actually code in" was trying to scroll with my Macbook's touchpad and it working pretty awfully. It seems like an obvious enough issue that it _has_ to be being worked in, but maybe not and I should report it.
- badosu 9y agoThis has been an issue for some time, tracked in (https://github.com/onivim/oni/issues/1568 https://github.com/onivim/oni/issues/1568) and (https://github.com/onivim/oni/issues/405 https://github.com/onivim/oni/issues/405). Unfortunately is not an easy task to accomplish at the moment, due to the way vim scrolling is tied with the terminal approach (line by line), does not seem as a hard block though and hopefully can be improved. Since most of the time you are scrolling with keybindings when using vim this may not be as big of an issue for most vim users (I never had issues in my experience), but certainly desirable to fix as it's a dealbreaker some.
- pault 9y agoThe main issue preventing smooth scrolling is it will require each split to be an independent neovim instance, which is (in my opinion) not quite as nice as native splits. There is a feature in development that does use a separate view for each split and smooth scrolling is possible if you are willing to give up your native splits. In practice I haven't noticed it because I don't use the mouse for scrolling.
- matado 9y agoloyyyyyy
- shapiro92 9y agodoes it actually bring any advantage except being closer to VIM in terms of navigation? People mention it is better than Atom due to how it leverages Electron which is nice but still, what is the value proposition of this IDE?
- krick 9y agoDoes it work with vim plugins? How much of my pre-existing vim configuration can be transfered onto oni? It's currently about 500-1000 lines in .vimrc and ≈50 3rd party plugins.
- skosch 9y agoPretty much 100%. It's a regular instance of neovim, just with an Electron UI around it. I've had no issues with my .vimrc at all.
- krick 9y agoEven things like Goyo? Then it's pretty damn great. Even though I hate Electron apps. Thanks, I need to try it.
- granitosaurus 9y agoI've been having trouble with running Goyo on similar projects, but maybe Oni is an exception.
- vr46 9y agoOne Vim to rule them all? Looks nice, will have to try it. Will never be a daily driver for me, as it’s not a terminal editor, but I like their thinking.
- RobertRoberts 9y agohttps://github.com/onivim/oni/wiki/Language-Support https://github.com/onivim/oni/wiki/Language-Support Why do I need NPM to install vue.js as a language for Oni? Can anyone explain why I would want to bother with this editor if it requires Node.js? Edit: I've tried all the other Electron based editors, and I don't recall a single one requiring Node.js/NPM to install anything.
- terraforming 9y agoI installed it and loaded my init.vim. It is just so slow. I'm a pretty heavy user of snippets, and it honestly takes like 1 second for my snippets to appear after I call them. Nvim desparetely needs a good GUI. Ever GUI I've tried (I think I've tried all of them) lags when calling snippets.
- arbie 9y agoFrom the Goals section: "Modern UX - The Vim experience should not be compromised by terminal limitations." Could someone expand upon this goal? Isn't the entirety of Vim built for - and around - terminal limitations?
- toxik 9y agoNot really, it’s certainly capable of terminal use but the various graphical frontends are a lot more convenient to use. It has never been the aim to only serve terminal usage.
- reidrac 9y agoI've been very happy with gvim for many years, so I don't think I will change any time soon (although Emacs + evil is very sweet too, specially writing Clojure). But there's one thing I can't really understand and, for me at least, is not an advantage working with code: why using tabs? It feels like an anti-pattern when I'm using (g)vim, I use buffers and I split in few windows, list buffers, change buffer, etc; and I never leave the keyboard. I guess it is "modern" to use the mouse, including the file explorer (I use :find mostly, then ctags navigation), but it is something that doesn't work for me at all.
- O_H_E 9y ago"tabs" does not mean that you have to use the mouse at all. I use Tabs extensively in browser and other apps, completely with the keyboard
- jagtesh 9y agoFor me, it is to avoid context switch. I'll have all the files I need open in different tabs and switch between them. If I need to cross reference something, I'll open it in a new pane. Personally, I like being able to see the filename in the tab and just hit gt or Gt a few times than to bring up the buffers list (with or without Ctrl-P) and type the filename. That being said, I love spacemacs and it doesn't have tabs (or I haven't researched that enough) where I make do with fuzzy searching through buffers.
- nulagrithom 9y agogt still works in Oni. You can also <C-w>h over to file explorer. I use tabs in vim because opening more than 2 buffers on my laptop gets really crowded.
- Tehnix 9y agoWhile Oni is still very young, it looks like one of the more promising Neovim frontends, and the development is progressing quite fast! If you are one of those types that often switch between editors, like me, then you might want to retain some of the muscle memory you've built up in stuff like Atom/VSCode/Whatever. I started creating a layer[0] for SpaceNeovim to replicate some of the common keybindings, such as Cmd+s for save, Cmd+w for closing tabs, Cmd+[1-9] for switching tabs etc. If anyone is interested in getting this, without going full in with SpaceNeovim, they can extract it from [1], which currently handles both VimR and Oni (different key for CMD), but you could simplify it to not use exe if you wanted to. It requires that you load your init.vim, so "oni.loadInitVim": true needs to be set in the Oni config. Another thing, you can quickly add support for an LSP in the Oni config with just, "language.haskell.languageServer.command": "stack", "language.haskell.languageServer.arguments": ["exec", "--", "hie", "--lsp"], "language.haskell.languageServer.rootFiles": [".git"], "language.haskell.languageServer.configuration": {}, which adds support for the Haskell LSP, hie, behind stack. [0] https://github.com/Tehnix/spaceneovim-layers/tree/master/layers/+gui/ide https://github.com/Tehnix/spaceneovim-layers/tree/master/lay... [1] https://github.com/Tehnix/spaceneovim-layers/blob/master/layers/%2Bgui/ide/config.vim#L49 https://github.com/Tehnix/spaceneovim-layers/blob/master/lay...
- lbj 9y agoThe challenge with building a new editor, is that it has to be superior to those editors already available. In this case that means beating Emacs which Im not seeing Oni doing yet. Will be interesting to follow though.
- O_H_E 9y agoQoute from a comment from the dev down the threads "I believe VSCode is making the right set of trade-offs for their user base - there is benefit to the sandboxing of the APIs as it helps lift the overall quality of plugins. Every editor is a different exercise in trade-offs, and I wanted to explore a different set, targeting a more niche group." https://news.ycombinator.com/item?id=16674641 https://news.ycombinator.com/item?id=16674641 I belive that there is no "Perfect" software, but there is a software that is Perfect for me (or anyone else)
- lbj 9y agoFair point
- aeroaks 9y agoGreat project. I tried Atom but was not satisfied with the performance. I would like to try it but looks like I am a noob with Vim. Where should I start?
- tomcooks 9y agoThe great "vimtutor", in 15 minutes you'll be extra-proficient.
- sevensor 9y agoEight acknowledgements, but no love for Bram? That's pretty cold, even if you don't like the way he runs the vim project.