Modern Modal Editing
🚧NOTE: We're now shifting our focus to building Oni 2 👷 👷♀
Oni is a new kind of editor, focused on maximizing productivity - combining modal editing with features you expect in modern editors. Oni is built with neovim, and inspired by VSCode, Atom, LightTable, and Emacs
The vision of Oni is to build an editor that allows you to go from thought to code as easily as possible - bringing together the raw editing power of Vim, the feature capabilities of Atom/VSCode, and a powerful and intuitive extensibility model - wrapped up in a beautiful package.
This repository is under active development, and until 1.0 please consider everything unstable.
Oni brings several IDE-like integrations to neovim:
- Embedded Browser
- Quick Info
- Code Completion
- Syntax / Compilation Errors
- Fuzzy Finding
- Status Bar
- Interactive Tutorial
And more coming - check out our Roadmap
Oni is cross-platform and supports Windows, Mac, and Linux.
If you're a Vim power user, and don't need all these features, check out our minimal configuration.
We have installation guides for each platform:
The goal of this project is to provide both the full-fledged Vim experience, with no compromises, while pushing forward to enable new productivity scenarios.
- Modern UX - The Vim experience should not be compromised by terminal limitations.
- Cross-platform support - across Windows, OS X, and Linux.
- Batteries included - rich features are available out of the box - minimal setup needed to be productive.
- Performance - no compromises, Vim is fast, and Oni should be fast too.
- Ease Learning Curve - without sacrificing the Vim experience.
Vim is an incredible tool for manipulating text at the speed of thought. With a composable, modal command language, it is no wonder that Vim usage is still prevalent today.
However, going from thought to code has some different challenges than going from thought to text. Code editors today provide several benefits that help to reduce cognitive load when writing code, and that benefit is tremendously important - not only in terms of pure coding efficiency and productivity, but also in making the process of writing code enjoyable and fun.
The goal of this project is to give an editor that gives the best of both worlds - the power, speed, and flexibility of using Vim for manipulating text, as well as the rich tooling that comes with an IDE. We want to make coding as efficient, fast, and fun as we can!
Some available plugins created by Oni users are listed below (if you'd like to add your plugin to this list please create a PR updating this README with the details).
There many ways to get involved & contribute to Oni:
- Thumbs up existing issues if they impact you.
- Create an issue for bugs or new features.
- Review and update our documentation.
- Try out the latest released build.
- Help us develop:
- Review PRs
- Submit a bug fix or feature
- Add test cases
- Create a blog post or YouTube video
- Follow us on Twitter
Oni is an independent project and is made possible by the support of some exceptional people. Big thanks to the following people for helping to realize this project:
- the neovim team, especially justinmk and tarruda - Oni would not be possible without their vision
- jordwalke for his generous support, inspiration, and ideas. And React ;)
- keforbes for helping to get this project off the ground
- Akin909 for his extensive contributions
- CrossR for polishing features and configurations
- Cryza for the webgl renderer
- tillarnold for giving us the
oninpm package name
- mhartington for his generous support
- badosu for his support, contributions, and managing the AUR releases
- All our current monthly sponsors and backers
- All of our contributors - thanks for helping to improve this project!
This project exists thanks to all the people who have contributed:
MIT License. Copyright (c) Bryan Phelps
Windows and OSX have a bundled version of Neovim, which is covered under Neovim's license
Bundled plugins have their own license terms. These include:
- typescript-vim (
- targets.vim (
- vim-commentary (
- vim-unimpaired (
- vim-surround (
- vim-reasonml (