Convert Figma logo to code with AI

onivim logooni

Oni: Modern Modal Editing - powered by Neovim

11,347
299
11,347
518

Top Related Projects

162,288

Visual Studio Code

82,552

Vim-fork focused on extensibility and usability

36,358

The official Vim repository

25,183

binary releases of VS Code without MS branding/telemetry/licensing

18,283

🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.

24,646

Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.

Quick Overview

Oni is an open-source, modern modal editor built on Neovim. It aims to combine the best aspects of modal editing with the features and accessibility of modern editors, providing a sleek and powerful development environment.

Pros

  • Combines the efficiency of Vim-style modal editing with modern IDE features
  • Cross-platform support (Windows, macOS, Linux)
  • Extensible architecture with plugin support
  • Built-in language server protocol (LSP) support for enhanced code intelligence

Cons

  • Steeper learning curve for users not familiar with Vim-style editing
  • Larger resource footprint compared to traditional Vim
  • Some users report occasional performance issues or crashes
  • Project development has slowed down in recent years

Getting Started

To get started with Oni:

  1. Download the latest release for your operating system from the Oni GitHub releases page.
  2. Install Oni by running the installer or extracting the archive, depending on your OS.
  3. Launch Oni and follow the initial setup wizard to configure your preferences.
  4. (Optional) Install additional plugins or customize your configuration by editing the ~/.config/oni/config.tsx file.

Basic usage:

  • Use i to enter insert mode and Esc to return to normal mode.
  • Navigate files using Vim-style commands (e.g., h, j, k, l).
  • Access the command palette with Ctrl+Shift+P (or Cmd+Shift+P on macOS).
  • Open files quickly with Ctrl+P (or Cmd+P on macOS).

For more detailed instructions and documentation, refer to the Oni wiki.

Competitor Comparisons

162,288

Visual Studio Code

Pros of VS Code

  • Larger community and ecosystem with extensive marketplace of extensions
  • More frequent updates and active development
  • Cross-platform support with consistent experience across Windows, macOS, and Linux

Cons of VS Code

  • Heavier resource usage, especially with multiple extensions
  • Electron-based, which can lead to performance issues on lower-end hardware
  • Less focus on vim-style editing out of the box

Code Comparison

VS Code (settings.json):

{
  "editor.fontSize": 14,
  "editor.lineNumbers": "relative",
  "vim.useSystemClipboard": true
}

Oni (config.tsx):

export const activate = (oni: Oni.Plugin.Api) => {
  oni.configuration.setValues({
    "editor.fontSize": "14px",
    "editor.fontFamily": "Fira Code",
    "ui.colorscheme": "nord",
  })
}

While both editors allow for extensive configuration, Oni's configuration is more focused on Vim-style editing and uses TypeScript for its config file, whereas VS Code uses JSON and requires extensions for advanced Vim functionality.

82,552

Vim-fork focused on extensibility and usability

Pros of Neovim

  • Lightweight and highly extensible
  • Faster startup time and better performance
  • Larger community and ecosystem of plugins

Cons of Neovim

  • Steeper learning curve for beginners
  • Less intuitive user interface compared to modern editors
  • Requires more configuration for advanced features

Code Comparison

Neovim configuration (init.vim):

set number
set relativenumber
set expandtab
set tabstop=2
set shiftwidth=2

Oni configuration (config.tsx):

export const activate = (oni) => {
  oni.configuration.setValues({
    "ui.fontSize": "14px",
    "editor.fontSize": "14px",
    "editor.fontFamily": "Fira Code",
  });
};

Summary

Neovim is a powerful, lightweight text editor with a strong focus on extensibility and performance. It offers a wide range of plugins and customization options but may require more setup and learning for new users. Oni, on the other hand, provides a more modern, user-friendly interface built on top of Neovim, making it easier for beginners to get started while still leveraging Neovim's core functionality.

36,358

The official Vim repository

Pros of vim

  • Extremely lightweight and fast
  • Highly customizable with extensive plugin ecosystem
  • Runs in terminal, making it ideal for remote server work

Cons of vim

  • Steep learning curve for beginners
  • Less modern UI and features out-of-the-box
  • Limited language server protocol (LSP) support without additional plugins

Code Comparison

Vim configuration (.vimrc):

set nocompatible
filetype plugin indent on
syntax on
set number
set expandtab

Oni configuration (config.tsx):

import * as React from "react"
import * as Oni from "oni-api"

export const activate = (oni: Oni.Plugin.Api) => {
  console.log("config activated")
}

Summary

Vim is a classic, lightweight text editor with a strong focus on efficiency and customization. It excels in terminal environments and has a vast ecosystem of plugins. However, it can be challenging for newcomers and lacks some modern features without additional configuration.

Oni, on the other hand, is a modern IDE built on top of Neovim, offering a more user-friendly interface and out-of-the-box features like LSP support. It aims to combine Vim's power with the convenience of modern editors, making it more accessible to a wider range of users.

25,183

binary releases of VS Code without MS branding/telemetry/licensing

Pros of VSCodium

  • Fully open-source and free of Microsoft telemetry
  • Larger community and more frequent updates
  • Extensive marketplace with a wide range of extensions

Cons of VSCodium

  • Lacks some proprietary features available in VS Code
  • May have compatibility issues with certain extensions
  • Slightly slower update cycle compared to VS Code

Code Comparison

VSCodium (settings.json):

{
  "editor.fontSize": 14,
  "workbench.colorTheme": "Monokai",
  "files.autoSave": "afterDelay"
}

Oni (config.tsx):

export const activate = (oni: Oni.Plugin.Api) => {
  oni.configuration.setValues({
    "editor.fontSize": "14px",
    "ui.colorscheme": "monokai",
    "editor.autoSave": true
  });
};

Key Differences

  • VSCodium is a binary distribution of VS Code without Microsoft branding, while Oni is a Vim-inspired IDE built on Electron
  • VSCodium uses JSON for configuration, whereas Oni uses TypeScript
  • Oni focuses on modal editing and Vim-like keybindings, while VSCodium follows a more traditional IDE approach
  • VSCodium has a larger user base and more active development compared to Oni
18,283

🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.

Pros of LunarVim

  • Active development with frequent updates and a large community
  • Extensive plugin ecosystem and customization options
  • Built-in LSP support and advanced features out of the box

Cons of LunarVim

  • Steeper learning curve for Neovim beginners
  • Potentially slower startup time due to numerous plugins

Code Comparison

LunarVim configuration example:

lvim.colorscheme = "lunar"
lvim.format_on_save = true
lvim.leader = "space"

Oni configuration example:

"oni.useDefaultConfig": true,
"oni.loadInitVim": false,
"editor.fontSize": "14px"

LunarVim is a Neovim-based IDE layer that offers a rich set of features and customization options, while Oni is a standalone Electron-based editor with Vim-like capabilities. LunarVim leverages Neovim's ecosystem, providing a more extensible and powerful environment for experienced users. Oni, on the other hand, aims to offer a more user-friendly experience for those transitioning from traditional IDEs to Vim-style editing.

LunarVim's configuration is typically done in Lua, allowing for more advanced scripting and customization. Oni uses a JSON-based configuration, which may be simpler for some users but less flexible for complex setups.

Both projects aim to enhance the Vim editing experience, but they take different approaches. LunarVim builds upon Neovim, while Oni creates a new editor with Vim-like features.

24,646

Blazing fast Neovim config providing solid defaults and a beautiful UI, enhancing your neovim experience.

Pros of NvChad

  • Lightweight and fast, built on Neovim for improved performance
  • Extensive plugin ecosystem with easy customization options
  • Active community and frequent updates

Cons of NvChad

  • Steeper learning curve for users new to Vim-style editors
  • Limited GUI features compared to Oni's more modern interface

Code Comparison

NvChad configuration (init.lua):

local custom_init_path = vim.api.nvim_get_runtime_file("lua/custom/init.lua", false)[1]

if custom_init_path then
  dofile(custom_init_path)
end

Oni configuration (config.tsx):

import * as React from "react"
import * as Oni from "oni-api"

export const activate = (oni: Oni.Plugin.Api) => {
  console.log("config activated")
}

NvChad focuses on a lightweight, terminal-based Neovim setup with extensive customization options, while Oni aims to provide a more modern, GUI-based Vim experience. NvChad's configuration is typically done in Lua, offering a more streamlined approach, whereas Oni uses TypeScript and React for its configuration and UI components. NvChad benefits from Neovim's performance improvements and plugin ecosystem, but may be less approachable for newcomers compared to Oni's more familiar interface.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README


NOTE: This repository is unmaintained - we are focusing on Onivim 2 and libvim.

Logo

Modern Modal Editing

Build Status Build Status codecov

Join the chat on discord! Total Downloads

Introduction

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.

Check out Releases for the latest binaries, or Build Oni from source. Consider making a donation via OpenCollective BountySource if you find this project useful!

Features

Oni brings several IDE-like integrations to neovim:

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.

Installation

We have installation guides for each platform:

The latest binaries are available on our Releases page, and if you'd prefer to build from source, check out our Development guide.

Goals

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.
  • Rich plugin development - using JavaScript, instead of VimL.
  • 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!

Documentation

  • Check out the Wiki for documentation on how to use and modify Oni.
  • FAQ
  • Roadmap

Available Plugins

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).

Contributing

There many ways to get involved & contribute to Oni:

Acknowledgements

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 oni npm 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!

Several other great neovim front-end UIs here served as a reference, especially NyaoVim and VimR. I encourage you to check those out!

Thank you!

Contributors

This project exists thanks to all the people who have contributed:

License

MIT License. Copyright (c) Bryan Phelps

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:

NPM DownloadsLast 30 Days