Code Monkey home page Code Monkey logo

oni's Introduction

alt text

IDE powered by Neovim + React + Electron

Build Status Build Status Join the chat at https://gitter.im/extr0py/Lobby BountySource Active Bounties

Introduction

ONI is a NeoVim front-end UI with rich IDE-like UI integration points, drawing inspiration from VSCode, Atom, and LightTable

screenshot

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.

Features

ONI brings several IDE-like integrations to NeoVim:

quick-info-demo

completion-demo

  • Syntax / Compilation Errors

syntax-error-demo

fuzzy-finder-demo

status-bar-demo

Installation

Check out Releases for the latest binary.

Windows & OSX releases come with a bundled Neovim release.

Windows

  • 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 via oni

Mac

  • Download Oni for Mac
  • Double-click on the archive to expand
  • Drag Oni.app to the Applications folder

Linux

Debian and Ubuntu based distributions

If you do not have Neovim, follow the instructions to Install Neovim and ensure the 'nvim' binary is available. Version 0.2.0 is required..

A tar.gz is also available.

Red Hat based distributions (Fedora, CentOS)

If you do not have Neovim, follow the instructions to Install Neovim and ensure the 'nvim' binary is available. Version 0.2.0 is required..

  • Download the .rpm package
  • Install the package with sudo dnf install <file>.rpm

A tar.gz is also available.

Arch based distributions

  • Available via the AUR
  • Install the package with yaourt -S oni

A tar.gz is also available.

Build

  1. Clone the repository: git clone https://github.com/extr0py/oni.git

  2. Install dependencies by running npm install from the root

  3. Build using npm run build from the root

  4. Run npm link to register the ONI command

  5. Run oni at the command line

Goals

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.

Documentation

Please see the Wiki for documentation on how to use and modify Oni.

FAQ

Why isn't my init.vim loaded?

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.

Included VIM Plugins

This distribution contains several VIM plugins that enhance the VIM experience.

These are:

As well as some color-schemes:

Roadmap

See Roadmap

License

MIT License. Copyright (c) extropygames

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

Bundled plugins have their own license terms. These include:

Contributing

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.

Thanks

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!

Sponsors

A big THANK YOU to our current monthly sponsors. Your contributions help keep this project alive!

Other Contributions

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.

oni's People

Contributors

bhageena avatar catsand avatar crossr avatar cyansprite avatar darkwater avatar freebroccolo avatar frigoeu avatar granitosaurus avatar hsheth2 avatar jakubjecminek avatar jasonszhao avatar josemarluedke avatar justjoeyuk avatar keforbes avatar kforbes-arkin avatar masonash avatar multikatt avatar nfm avatar rafi993 avatar sahewat avatar sitedyno avatar someguynamedmatt avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.