/veonim

simple modal IDE built on neovim

Primary LanguageTypeScriptMIT LicenseMIT

Veonim is a simple modal IDE built on Neovim and VSCode extensions. The goal is to create my ideal programming environment

features

  • Superfast with things like WebGL GPU rendering and multithreading
  • Support VSCode extensions (work in progress, but can try today in 0.22.0+)
  • Aims to be 100% compatible with Neovim (see #9421)
  • All configuration done via vimrc with vimscript/Lua/remote plugins
  • All Veonim features opt-in. Use as much or as little of the IDE features as you want and customize your workflow
  • Fuzzy search files, buffers, buffer text, project text search (powered by ripgrep)
  • Multiple concurrent Neovim instances (like tmux sessions)
  • Fully keyboard driven (no mouse support)
  • But wait, there's more! See the User Guide

getting started

See the User Guide

project status

Veonim is in heavy development. Alpha status at best.

Currently in progress:

  • fix/polish VSCode language extension support
  • support VSCode debug adapter extensions
  • explore removing electron
  • inventory menu (spacemacs-like mapping menu guides)
  • ext_windows support

show & tell

auto completion

Auto complete with documentation powered by VSCode extensions. If you want autocompletion, make sure completefunc is not overridden in your vimrc

fuzzy file finder

Fuzzy search to open any file in the current working directory

  • :Veonim files

find in project

Fuzzy project text search and filter - powered by Ripgrep

  • :Veonim grep
  • :Veonim grep-word
  • :Veonim grep-selection
  • :Veonim grep-resume

symbol search

Fuzzy menu for all current symbols in buffer or workspace. Requires a relevant VSCode language extension

  • :Veonim symbols
  • :Veonim workspace-symbols

signature hint

Show function signature help and documentation when using Veonim autocompletion. Requires a relevant VSCode language extension. Requires completefunc to not be overridden

hover information

Show hover information and documentation about the current symbol under the cursor. Requires a relevant VSCode language extension

  • :Veonim hover

problems

Underline problems, view error details, navigate between errors, and apply refactoring fixes as reported by a VSCode language extension

  • :Veonim show-problem
  • :Veonim next-problem
  • :Veonim prev-problem
  • :Veonim code-action

explorer

Fuzzy find and navigate files and directories

  • :Veonim explorer

references

Find all references, jump between references, goto definition/implementation/typedef, and highlight document symbols. Requires a relevant VSCode language extension

  • :Veonim references
  • :Veonim next-usage
  • :Veonim prev-usage
  • :Veonim definition
  • :Veonim implementation
  • :Veonim type-definition
  • :Veonim highlight
  • :Veonim highlight-clear

buffer search

Fuzzy search current buffer text

  • :Veonim buffer-search

nyan cat

Currently the only Neovim GUI that has nyan cat

  • :Veonim nc

other cool projects you should check out

development

stuff you need

  • node
  • npm

install dependencies and start automagic watch build and live reload instance

npm i
npm start

release build

build with release configuration

npm run build

test it out

npm run start:release

create binary package

npm run package

binaries available in dist

development neovim configuration

when starting the development build of veonim (via npm start) the app is configured to load configurations from a local folder instead of the default XDG_CONFIG_HOME location. in other words, pretend this is your ~/.config folder when running veonim in dev mode.

for example, place/copy your neovim configurations relative to the veonim source folder

  • ./xdg_config/nvim/init.vim - init.vim
  • ./xdg_config/nvim/colors/gruvbox.vim - colors

veonim will also download and install vim plugins and vscode extensions to this local dev config folder.

if the folder does not exist, an empty one will be created. the default veonim configurations will be used (same configurations that would apply if no ~/.config/XDG_CONFIG_HOME folder existed)