Skip to main content

Dashboard, UI & Notifications

All UI elements in LazyVim are controlled entirely via keyboard. This page covers every UI component and how to use them without touching the mouse.

Dashboard​

The dashboard appears when you open Neovim with no file. It provides quick access to common actions:

┌──────────────────────────────────────┐
│ │
│ ██╗ █████╗ ... │
│ ██║ ██╔══██╗ ... │
│ ... LazyVim logo ... │
│ │
│  f Find File │
│  n New File │
│  g Find Text │
│  r Recent Files │
│  c Config │
│  s Restore Session │
│  x Lazy Extras │
│ 󰒲 l Lazy │
│  q Quit │
│ │
└──────────────────────────────────────┘

Dashboard Keys (Keyboard)​

KeyAction
fFind files (Telescope/Snacks picker)
nNew file
gFind text (grep)
rRecent files
cOpen config (~/.config/nvim)
sRestore last session
xOpen LazyExtras browser
lOpen Lazy plugin manager
qQuit Neovim

Customize the Dashboard​

lua/plugins/dashboard.lua
return {
"snacks.nvim",
opts = {
dashboard = {
preset = {
-- Custom header ASCII art
header = [[
╔══════════════════════════════╗
║ MY NEOVIM CONFIG ║
╚══════════════════════════════╝
]],
-- Custom key entries
keys = {
{ icon = " ", key = "f", desc = "Find File", action = ":lua Snacks.dashboard.pick('files')" },
{ icon = " ", key = "n", desc = "New File", action = ":ene | startinsert" },
{ icon = " ", key = "g", desc = "Find Text", action = ":lua Snacks.dashboard.pick('live_grep')" },
{ icon = " ", key = "r", desc = "Recent Files", action = ":lua Snacks.dashboard.pick('oldfiles')" },
{ icon = " ", key = "c", desc = "Config", action = ":lua Snacks.dashboard.pick('files', {cwd = vim.fn.stdpath('config')})" },
{ icon = " ", key = "s", desc = "Restore Session", section = "session" },
{ icon = " ", key = "x", desc = "Lazy Extras", action = ":LazyExtras" },
{ icon = "󰒲 ", key = "l", desc = "Lazy", action = ":Lazy" },
{ icon = " ", key = "q", desc = "Quit", action = ":qa" },
},
},
},
},
}

Alternative Dashboards​

Enable via extras:

{ import = "lazyvim.plugins.extras.ui.alpha" } -- Alpha dashboard
{ import = "lazyvim.plugins.extras.ui.mini-starter" } -- Mini starter

Bufferline (Tab Bar)​

Bufferline shows open buffers as tabs at the top. It shows filetype icons, diagnostics, and modified indicators.

Keyboard Buffer Management​

KeyAction
<S-h>Previous buffer
<S-l>Next buffer
[bPrevious buffer
]bNext buffer
<leader>bbSwitch to last buffer
<leader>bdDelete current buffer
<leader>boDelete other buffers
<leader>biDelete invisible buffers
<leader>bDDelete buffer and close window
<leader>bpPin buffer
<leader>bPDelete all non-pinned buffers
<leader>blDelete buffers to the left
<leader>brDelete buffers to the right
<leader>bjPick buffer (fuzzy)

Pin Buffers​

Pinning protects buffers from bulk delete.

  1. Open the buffer you want to keep
  2. &lt;leader&gt;bp to pin it (appears with a pin icon)
  3. &lt;leader&gt;bP deletes all unpinned buffers at once

Buffer Navigation Workflow​

With many files open:

&lt;S-l&gt; ← Move forward one buffer
&lt;S-h&gt; ← Move backward
&lt;leader&gt;bj ← Type buffer name to jump directly
&lt;leader&gt;bb ← Toggle between two files
&lt;leader&gt;bd ← Close current buffer when done

Lualine (Statusline)​

Lualine displays information at the bottom of the screen in three areas: left, center (global), right.

Statusline Sections​

[NORMAL] [main] [~/project/src/app.py] [✕ 3 ⚠ 2] [git:main] [+1 ~0 -0] [14:25] [ 14:30]
↑mode ↑branch ↑file path ↑diagnostics ↑git ↑diff ↑line:col ↑clock
SectionShowsPurpose
lualine_aModeNORMAL, INSERT, VISUAL, etc.
lualine_bGit branchCurrent branch name
lualine_cRoot dir, diagnostics, file icon, file path, Trouble symbolsBuffer context
lualine_xProfiler, Noice command/mode, DAP status, updates, git diffStatus indicators
lualine_yProgress, line:columnCursor location
lualine_zCurrent timeClock

Statusline Is Keyboard-Readable​

  • Mode: Tells you what mode you are in without looking at the cursor
  • Diagnostics: See ✕ 3 ⚠ 2 means 3 errors, 2 warnings
  • Git branch: Shows main, feature/xyz, etc.
  • Diff: +1 ~0 -0 = 1 added, 0 modified, 0 removed lines
  • Plugin updates: Shows when updates are available

Customize the Statusline​

lua/plugins/statusline.lua
return {
"nvim-lualine/lualine.nvim",
opts = function(_, opts)
-- Add a custom section
table.insert(opts.sections.lualine_x, {
function() return "📦" end,
})
end,
}

Noice (Notifications & Messages)​

Noice replaces the default command-line and message UI with a modern overlay.

Keyboard Notification Controls​

KeyAction
<leader>nShow notification history
<leader>unDismiss all visible notifications
<leader>snlShow last notification
<leader>snhShow full notification history
<leader>snaShow all (history + current)
<leader>sndDismiss all
<leader>sntOpen notification picker (Telescope/Snacks)

Command-Line Mode​

Noice enhances the command line (: mode):

KeyAction
:Opens enhanced command line (inline, not at bottom)
<S-Enter>Redirect cmdline output to a split
<c-f> / <c-b>Scroll forward/backward in Noice windows

Noice Presets​

Noice uses presets to control behavior:

  • bottom_search: Search results (/ ?) appear at bottom instead of inline
  • command_palette: Command history appears as a floating palette
  • long_message_to_split: Long messages open in a split instead of blocking

Daily Workflow​

1. Type :command ← Noice shows it inline near cursor
2. Press Enter ← Command runs
3. See result as notification
4. &lt;leader&gt;n ← Check notification history if needed
5. &lt;leader&gt;snl ← See the last message again
6. &lt;leader&gt;snd ← Dismiss all when clutter builds up

UI Toggles (Keyboard)​

These toggle various UI elements. All start with &lt;leader&gt;u:

Visibility Toggles​

KeyToggleWhat It Does
<leader>ulLine NumbersShow/hide absolute line numbers
<leader>uLRelative NumbersShow/hide relative line numbers
<leader>usSpellingHighlight misspelled words
<leader>uwLine WrapSoft-wrap long lines
<leader>ucConceal LevelHide/show markup characters
<leader>uATablineShow/hide the bufferline tab bar
<leader>ugIndent GuidesShow/hide vertical indent lines
<leader>uGGit SignsShow/hide git change indicators
<leader>uSSmooth ScrollEnable/disable animated scrolling

Diagnostics Toggles​

KeyToggleWhat It Does
<leader>udDiagnosticsShow/hide all diagnostic signs
<leader>uhInlay HintsShow/hide LSP inline type hints

Visual Toggles​

KeyToggleWhat It Does
<leader>ubDark BackgroundSwitch between light/dark theme variant
<leader>uDDimmingDim inactive windows/buffers
<leader>uaAnimationsEnable/disable snacks animations
<leader>uTTreesitterEnable/disable Treesitter highlighting
<leader>uCColorschemesOpen colorscheme picker
<leader>uzZen ModeFull-screen focus mode (no tabs/status)
<leader>uZ / <leader>wmZoom ModeMaximize current window

Info Toggles​

KeyAction
<leader>uiInspect highlight group under cursor
<leader>uIInspect Treesitter node under cursor

Toggle Workflow​

1. Open a file
2. &lt;leader&gt;uw ← Toggle wrap for long lines
3. &lt;leader&gt;ug ← Toggle indent guides for alignment
4. &lt;leader&gt;us ← Toggle spell check for editing prose
5. &lt;leader&gt;uL ← Toggle relative numbers for editing
6. &lt;leader&gt;uz ← Zen mode — no distractions
7. &lt;leader&gt;uz again ← Exit zen mode
8. &lt;leader&gt;uc ← Cycle colorschemes to try different themes

Zoom vs Zen Mode​

ModeKeyWhat It Does
Zoom<leader>wm or <leader>uZMaximize current window (hides other splits temporarily)
Zen<leader>uzFull-screen, no tabs/statusline, centered content

Both are toggles — press the same key again to restore.

UI Component Summary​

ComponentPurposeToggle/Open
DashboardStartup screenAuto on nvim with no file
BufferlineTab bar for buffers<leader>uA to toggle
LualineStatusline at bottomAlways visible
NoiceNotifications & command UI<leader>n for history
ExplorerFile tree sidebar<leader>e
PickerFuzzy finder overlay<leader>ff etc.