/fvim

Cross platform Neovim front-end UI, built with F# + Avalonia

Primary LanguageF#MIT LicenseMIT

FVim Build status

Cross platform Neovim front-end UI, built with F# + Avalonia.

Screenshot

Features

  • HiDPI support -- try dragging it across two screens with different DPIs ;)
  • Proper font rendering -- respects font style, baseline, etc.
  • Proper cursor rendering -- color, blink etc.
  • Built-in support for Nerd font -- no need to patch your fonts!
  • East asia wide glyph display with font fallback options
  • Emojis!
  • Use a Windows FVim frontend with a WSL neovim: fvim --wsl

Try these bindings (note, fvim-specific settings only work in ginit.vim, not init.vim!):

if exists('g:fvim_loaded')
    " good old 'set guifont' compatibility
    set guifont=Iosevka\ Slab:h16
    " Ctrl-ScrollWheel for zooming in/out
    nnoremap <silent> <C-ScrollWheelUp> :set guifont=+<CR>
    nnoremap <silent> <C-ScrollWheelDown> :set guifont=-<CR>
    nnoremap <A-CR> :call rpcnotify(1, 'ToggleFullScreen', 1)<CR>
endif

Some work-in-progress fancy cursor effects:

if exists('g:fvim_loaded')
    " 1st param = blink animation
    " 2nd param = move animation
    call rpcnotify(1, 'SetCursorAnimation', v:true, v:true)
endif

fluent_cursor

Goals

  • High performance rendering, low latency (60FPS on 4K display with reasonable font size!) (wip)
  • GPU acceleration (wip)
  • Input method support built from scratch (wip)
  • Multi-grid <=> Multi-window mapping (multiple windows in the OS sense, not Vim "frames")
  • Extend with XAML -- UI widgets as NeoVim plugins

Non-Goals

  • Electron ecosystem integration