[WORK IN PROGRESS] an IDE experience and a standard library for neovim Lua runtime
Alternatives To Mode
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
a day ago1July 02, 202226gpl-3.0Lua
A community-driven modular vim/neovim distribution - The ultimate vimrc
a day ago2August 19, 20211gpl-3.0Lua
An attempt to make neovim cli functional like an IDE while being very beautiful, blazing fast startuptime
18 hours ago78gpl-3.0Lua
🌙 LunarVim is an IDE layer for Neovim. Completely free and community driven.
Oni11,47713 years ago6April 02, 2017518mitTypeScript
Oni: Modern Modal Editing - powered by Neovim
18 hours ago3gpl-3.0Lua
AstroNvim is an aesthetic and feature-rich neovim config that is extensible and easy to use with a great set of plugins
Haskell Ide Engine2,435
2 years ago302otherHaskell
The engine for haskell ide-integration. Not an IDE
a day ago51June 21, 202293mitGo
A GUI frontend for neovim.
Vim Config1,672
23 days ago35Vim Script
Lean mean Neovim machine, carefully crafted with :heart: Use with latest Neovim.
2 days ago7mitVim Script
Free, ultrafast Copilot alternative for Vim and Neovim
6 years ago17unlicenseRust
An IDE for Rust
Alternatives To Mode
Select To Compare

Alternative Project Comparisons

mode logo


an IDE experience and a standard library for neovim Lua runtime

mode is a work in progress.

mode is a plugin for neovim which attempts to do the following:

  • mode is a standard library for neovim

    mode provides a foundation for other plugins to be built with expressive and ergonomic Lua API.

  • mode is an integrated development environment

    mode includes an implementation of LSP client along with other IDE-like features like an integration with fuzzy finder.

  • mode is an experiment with new neovim features

Installation & Usage

Put the following lines into ~/.config/nvim/init.vim (assuming vim-plug):

Plug 'arrowresearch/mode'


The following keybindings are recommended (though you might want to make them buffer local for those buffers which you want enable mode for):

nmap <silent> t  <Cmd>ModeHover<CR>
nmap <silent> gd <Cmd>ModeDefinition<CR>
nmap <silent> gt <Cmd>ModeTypeDefinition<CR>
nmap <silent> mm <Cmd>ModeNextLocation<CR>
nmap <silent> mp <Cmd>ModePrevLocation<CR>
set omnifunc=ModeOmni

Integration with statusline

There's diagnostics_count() function which returns current counts of errors and warnings for the buffer, one can make use of it to inject the info into statusline:

function! ModeWarnings() abort
  let l:counts = luaeval("require('mode').diagnostics_count().warnings")
  return l:counts == 0 ? '' : printf('WARN:%d', l:counts)

function! ModeErrors() abort
  let l:counts = luaeval("require('mode').diagnostics_count().errors")
  return l:counts == 0 ? '' : printf('ERR:%d', l:counts)

set statusline+=\%#StatusLineError#%{ModeErrors()}
set statusline+=\%#StatusLineWarning#%{ModeWarnings()}

Thank you

mode borrows code from:

Popular Neovim Projects
Popular Ide Projects
Popular Text Editors Categories

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.