Oni is a NeoVim front-end UI with rich IDE-like UI integration points, drawing inspiration from VSCode, Atom, and LightTable
This repository is under active development, and until 1.0 please consider everything unstable.
Check out Releases for the latest binaries, or Build Oni from source.
Oni brings several IDE-like integrations to NeoVim:
- Syntax / Compilation Errors
Check out Releases for the latest binary.
Windows & OSX releases come with a bundled Neovim release.
- Download the Oni installer for Windows
- Once it is downloaded, run the installer. This will only take a minute.
- By default, Oni is installed under
C:\Program Files (x86)\Oni
for a 64-bit machine.
You can also find install via a zip archive
You may want to add Oni to your
%PATH%
, so that from the console, you can open Oni viaoni
- Download Oni for Mac
- Double-click on the archive to expand
- Drag
Oni.app
to theApplications
folder
If you do not have Neovim, follow the instructions to Install Neovim and ensure the 'nvim' binary is available. Version
0.2.1
is required..
- Download the .deb package (64-bit)
- Install the package with
sudo dpkg -i <file>.deb
A tar.gz is also available.
If you do not have Neovim, follow the instructions to Install Neovim and ensure the 'nvim' binary is available. Version
0.2.1
is required..
- Download the .rpm package
- Install the package with
sudo dnf install <file>.rpm
A tar.gz is also available.
- Available via the AUR
- Install the package with
yaourt -S oni
A tar.gz is also available.
Ensure all dependencies for node-gyp are installed, as some modules require building native code.
-
Clone the repository:
git clone https://github.com/extr0py/oni.git
-
Install dependencies by running
npm install
from the root -
Build using
npm run build
from the root -
Run
npm link
to register the oni command -
Run
oni
at the command line
The goal of this project is to provide both the full-fledged Vim experience, with no compromises, while pushing forward to enable new scenarios.
- Modern UX - The Vim experience should not be compromised with poor user experiences that stem from terminal limitations.
- Rich plugin development - using JavaScript, instead of VimL, allowing deep-language integration.
- 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. TypeScript development is the canonical example, but the hope is that other language providers will be included. Later, an included package manager will make it simple to find and install plugins.
- 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 even in the realm of modern editors.
However, going from thought to code has some different challenges than going from thought to text. IDEs 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.
In my journey of learning Vim and increasing proficiency in other editors, I've found there is always a trade-off - either enjoy the autocompletion and IDE features, and compromise on the experience and muscle memory I've built with Vim, or work in Vim and compromise on the rich language functionality we have in an IDE.
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.
Please see the Wiki for documentation on how to use and modify Oni.
TL;DR - Set the
oni.useDefaultConfig
configuration value to false
By default, Oni has an opinionated, prescribed set of plugins, in order to facilitate a predictable out-of-box experience that highlights the additional UI integration points. However, this will likely have conflicts with a Vim/Neovim veteran's finely-honed configuration.
To avoid loading the Oni defaults, and instead use your init.vim
, set oni.useDefaultConfig
to false in $HOME/.oni/config.js
. See Configuration for more details on configuring Oni.
This distribution contains several Vim plugins that enhance the Vim experience.
These are:
As well as some color-schemes:
See Roadmap
MIT License. Copyright (c) Bryan Phelps
There are a few image and audio assets bundled with Oni - see ASSETS.md for attribution.
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 (
oni/vim/core/typescript.vim
) - targets.vim (
oni/vim/default/bundle/targets.vim
) - vim-commentary (
oni/vim/default/bundle/vim-commentary
) - vim-unimpaired (
oni/vim/default/bundle/vim-unimpaired
) - vim-reasonml (
.vim
files inoni/vim/core/oni-plugin-reasonml
)
Contributions are very much welcome :)
If you're interested in helping out, check out our Debugging Page for tips and tricks for working with Oni.
Big thanks to the NeoVim team - without their work, this project would not be possible. The deep integration with Vim would not be possible without the incredible work that was done to enable the msgpack-RPC interface. Thanks!
A big THANK YOU to our current monthly sponsors. Your contributions help keep this project alive!
In addition, there are several other great NeoVim front-end UIs here that served as great reference points and learning opportunities.
Also, thanks to our contributors for helping out!
Special thanks to Till Arnold for handing over the oni
NPM package name.