Configuration

Global Vim Settings

Neovide supports settings via global variables with a neovide prefix. They enable configuring many parts of the editor and support dynamically changing them at runtime.

init.vim helpers

Hello, is this Neovide?

Not really a configuration option, but g:neovide only exists and is set to v:true if this Neovim is in Neovide. It’s not set else. Useful for configuring things only for Neovide in your init.vim:

  1. if exists("g:neovide")
  2. " Put anything you want to happen only in Neovide here
  3. endif

Display

Font

  1. set guifont=Fira\ Code\ Nerd\ Font:h14

Controls the font used by Neovide. Only setting which is actually controlled through an option, and as such it’s also documented in :h guifont. But to sum it up and also add Neovide’s extension:

  • The basic format is Primary\ Font,Fallback\ Font\ 1,Fallback\ Font\ 2:option1:option2:option3, while you can have as many fallback fonts as you want (even 0) and as many options as you want (also even 0).
  • Fonts
    • are separated with , (commas).
    • can contain spaces by either escaping them or using _ (underscores).
  • Options
    • apply to all fonts at once.
    • are separated from the fonts and themselves through : (colons).
    • can be one of the following:
      • hX — Sets the font size to X points, while X can be any (even floating-point) number.
      • b — Sets the font bold.
      • i — Sets the font italic.
      • #e-X (available since 0.10.2) — Sets edge pixels to be drawn opaquely or with partial transparency, while X is a type of edging:
        • antialias (default)
        • subpixelantialias
        • alias
      • #h-X (available since 0.10.2) - Sets level of glyph outline adjustment, while X is a type of hinting:
        • full (default)
        • normal
        • slight
        • none
  • Some examples:
    • Hack,Noto_Color_Emoji:h12:b — Hack at size 12 in bold, with Noto Color Emoji as fallback should Hack fail to contain any glyph.
    • Roboto_Mono_Light:h10 — Roboto Mono Light at size 10.
    • Hack:h14:i:#e-subpixelantialias:#h-none

Scale

  1. let g:neovide_scale_factor = 1.0

Available since 0.10.2.

In addition to setting the font itself, this setting allows to change the scale without changing the whole font definition. Very useful for presentations. See the FAQ section about this for a nice recipe to bind this to a hotkey.

Background Color (Currently macOS only)

  1. " g:neovide_transparency should be 0 if you want to unify transparency of content and title bar.
  2. let g:neovide_transparency = 0.0
  3. let g:transparency = 0.8
  4. let g:neovide_background_color = '#0f1117'.printf('%x', float2nr(255 * g:transparency))

Available since 0.10.

BackgroundColor

Setting g:neovide_background_color to a value that can be parsed by csscolorparser-rs will set the color of the whole window to that value.

Note that g:neovide_transparency should be 0 if you want to unify transparency of content and title bar.

Floating Blur Amount

  1. let g:neovide_floating_blur_amount_x = 2.0
  2. let g:neovide_floating_blur_amount_y = 2.0

Available since 0.9.

Setting g:neovide_floating_blur_amount_x and g:neovide_floating_blur_amount_y controls the blur radius on the respective axis for floating windows.

Transparency

  1. let g:neovide_transparency = 0.8

Transparency

Setting g:neovide_transparency to a value between 0.0 and 1.0 will set the opacity of the window to that value.

Scroll Animation Length

  1. let g:neovide_scroll_animation_length = 0.3

Sets how long the scroll animation takes to complete, measured in seconds.

Hiding the mouse when typing

  1. let g:neovide_hide_mouse_when_typing = v:false

By setting this to v:true, the mouse will be hidden as soon as you start typing. This setting only affects the mouse if it is currently within the bounds of the neovide window. Moving the mouse makes it visible again.

Underline automatic scaling

  1. let g:neovide_underline_automatic_scaling = v:false

Available since 0.10.

Setting g:neovide_underline_automatic_scaling to a boolean value determines whether automatic scaling of text underlines (including undercurl, underdash, etc.) is enabled. Noticeable for font sizes above 15.

Note: This is currently glitchy, and leads to some underlines being clipped by the line of text below.

Functionality

Refresh Rate

  1. let g:neovide_refresh_rate = 60

Setting g:neovide_refresh_rate to a positive integer will set the refresh rate of the app. This is limited by the refresh rate of your physical hardware, but can be lowered to increase battery life.

Also do note that Neovide’s frame pacing is far from optimal at the moment, so better hardware might not mean better FPS.

Idle Refresh Rate

  1. let g:neovide_refresh_rate_idle = 5

Available since 0.10.

Setting g:neovide_refresh_rate_idle to a positive integer will set the refresh rate of the app when it is not in focus.

This might not have an effect on every platform (e.g. Wayland).

No Idle

  1. let g:neovide_no_idle = v:true

Setting g:neovide_no_idle to a boolean value will force neovide to redraw all the time. This can be a quick hack if animations appear to stop too early.

Confirm Quit

  1. let g:neovide_confirm_quit = v:true

If set to true, quitting while having unsaved changes will require confirmation. Enabled by default.

Fullscreen

  1. let g:neovide_fullscreen = v:true

Setting g:neovide_fullscreen to a boolean value will set whether the app should take up the entire screen. This uses the so called “windowed fullscreen” mode that is sometimes used in games which want quick window switching.

Remember Previous Window Size

  1. let g:neovide_remember_window_size = v:true

Setting g:neovide_remember_window_size to a boolean value will determine whether the window size from the previous session or the default size will be used on startup. The commandline option --geometry will take priority over this value.

Profiler

  1. let g:neovide_profiler = v:false

Setting this to v:true enables the profiler, which shows a frametime graph in the upper left corner.

Input Settings

Use Logo Key

  1. let g:neovide_input_use_logo = v:false " v:true on macOS

Setting g:neovide_input_use_logo to a boolean value will change how logo key (also known as super key>), command key or windows key) is handled, allowing all key combinations containing logo to be forwarded to neovim. On MacOS, this defaults to true (so that e.g. cmd+v works for pasting with respective setup of init.vim), and to false for other platforms (that typically use e.g. ctrl+v for pasting).

macOS Alt is Meta

  1. let g:neovide_input_macos_alt_is_meta = v:false

Available since 0.10.

Interprets Alt + whatever actually as <M-whatever>, instead of sending the actual special character to Neovim.

Touch Deadzone

  1. let g:neovide_touch_deadzone = 6.0

Setting g:neovide_touch_deadzone to a value equal or higher than 0.0 will set how many pixels the finger must move away from the start position when tapping on the screen for the touch to be interpreted as a scroll gesture.

If the finger stayed in that area once lifted or the drag timeout happened, however, the touch will be interpreted as tap gesture and the cursor will move there.

A value lower than 0.0 will cause this feature to be disabled and all touch events will be interpreted as scroll gesture.

Touch Drag Timeout

  1. let g:neovide_touch_drag_timeout = 0.17

Setting g:neovide_touch_drag_timeout will affect how many seconds the cursor has to stay inside g:neovide_touch_deadzone in order to begin “dragging”

Once started, the finger can be moved to another position in order to form a visual selection. If this happens too often accidentally to you, set this to a higher value like 0.3 or 0.7.

Cursor Settings

Animation Length

Short Cursor Animation Length     Long Cursor Animation Length

  1. let g:neovide_cursor_animation_length=0.13

Setting g:neovide_cursor_animation_length determines the time it takes for the cursor to complete it’s animation in seconds. Set to 0 to disable.

Animation Trail Size

Short Cursor Trail Length     Long Cursor Trail Length

  1. let g:neovide_cursor_trail_size = 0.8

Setting g:neovide_cursor_trail_size determines how much the trail of the cursor lags behind the front edge.

Antialiasing

  1. let g:neovide_cursor_antialiasing = v:true

Enables or disables antialiasing of the cursor quad. Disabling may fix some cursor visual issues.

Unfocused Outline Width

  1. let g:neovide_cursor_unfocused_outline_width = 0.125

Specify cursor outline width in ems. You probably want this to be a positive value less than 0.5. If the value is \<=0 then the cursor will be invisible. This setting takes effect when the editor window is unfocused, at which time a block cursor will be rendered as an outline instead of as a full rectangle.

Cursor Particles

There are a number of vfx modes you can enable which produce particles behind the cursor. These are enabled by setting g:neovide_cursor_vfx_mode to one of the following constants.

None at all

  1. let g:neovide_cursor_vfx_mode = ""

The default, no particles at all.

Railgun

Railgun

  1. let g:neovide_cursor_vfx_mode = "railgun"

Torpedo

Torpedo

  1. let g:neovide_cursor_vfx_mode = "torpedo"

Pixiedust

Pixiedust

  1. let g:neovide_cursor_vfx_mode = "pixiedust"

Sonic Boom

Sonicboom

  1. let g:neovide_cursor_vfx_mode = "sonicboom"

Ripple

Ripple

  1. let g:neovide_cursor_vfx_mode = "ripple"

Wireframe

Wireframe

  1. let g:neovide_cursor_vfx_mode = "wireframe"

Particle Settings

Options for configuring the particle generation and behavior.

Particle Opacity

  1. let g:neovide_cursor_vfx_opacity = 200.0

Sets the transparency of the generated particles.

Particle Lifetime

  1. let g:neovide_cursor_vfx_particle_lifetime = 1.2

Sets the amount of time the generated particles should survive.

Particle Density

  1. let g:neovide_cursor_vfx_particle_density = 7.0

Sets the number of generated particles.

Particle Speed

  1. let g:neovide_cursor_vfx_particle_speed = 10.0

Sets the speed of particle movement.

Particle Phase

  1. let g:neovide_cursor_vfx_particle_phase = 1.5

Only for the railgun vfx mode.

Sets the mass movement of particles, or how individual each one acts. The higher the value, the less particles rotate in accordance to each other, the lower, the more line-wise all particles become.

Particle Curl

  1. let g:neovide_cursor_vfx_particle_curl = 1.0

Only for the railgun vfx mode.

Sets the velocity rotation speed of particles. The higher, the less particles actually move and look more “nervous”, the lower, the more it looks like a collapsing sine wave.