Skip to content

yatli/fvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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, ligatures 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!
  • High performance rendering, low latency (60FPS on 4K display with reasonable font size!)
  • GPU acceleration
  • Use a Windows FVim frontend with a WSL neovim: fvim --wsl
  • Use the front end with a remote neovim: fvim --ssh user@host
  • Use custom neovim binary: fvim --nvim ~/bin/nvim.appimage

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

Installation

Download the latest release package for your system, extract and run FVim!

Building from source

We're now targeting netcoreapp3.0 so make sure to install the latest preview SDK from the .NET site. We're also actively tracking the head of Avalonia, so please add their myget feed (https://www.myget.org/F/avalonia-ci/api/v2) to your nuget package manager:

# Windows:
nuget sources add -Name "Avalonia Nightly" -Source "https://www.myget.org/F/avalonia-ci/api/v2" -NonInteractive 
# Others:
Edit ~/.nuget/NuGet/config.xml and insert the feed.

Then, simply:

git clone https://github.com/yatli/fvim
cd fvim
dotnet build -c Release
dotnet run -c Release

Goals

  • 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