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)
| Key | Action |
|---|---|
f | Find files (Telescope/Snacks picker) |
n | New file |
g | Find text (grep) |
r | Recent files |
c | Open config (~/.config/nvim) |
s | Restore last session |
x | Open LazyExtras browser |
l | Open Lazy plugin manager |
q | Quit Neovim |
Customize the Dashboard
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
| Key | Action |
|---|---|
<S-h> | Previous buffer |
<S-l> | Next buffer |
[b | Previous buffer |
]b | Next buffer |
<leader>bb | Switch to last buffer |
<leader>bd | Delete current buffer |
<leader>bo | Delete other buffers |
<leader>bi | Delete invisible buffers |
<leader>bD | Delete buffer and close window |
<leader>bp | Pin buffer |
<leader>bP | Delete all non-pinned buffers |
<leader>bl | Delete buffers to the left |
<leader>br | Delete buffers to the right |
<leader>bj | Pick buffer (fuzzy) |
Pin Buffers
Pinning protects buffers from bulk delete.
- Open the buffer you want to keep
<leader>bpto pin it (appears with a pin icon)<leader>bPdeletes all unpinned buffers at once
Buffer Navigation Workflow
With many files open:
<S-l> ← Move forward one buffer
<S-h> ← Move backward
<leader>bj ← Type buffer name to jump directly
<leader>bb ← Toggle between two files
<leader>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
| Section | Shows | Purpose |
|---|---|---|
lualine_a | Mode | NORMAL, INSERT, VISUAL, etc. |
lualine_b | Git branch | Current branch name |
lualine_c | Root dir, diagnostics, file icon, file path, Trouble symbols | Buffer context |
lualine_x | Profiler, Noice command/mode, DAP status, updates, git diff | Status indicators |
lualine_y | Progress, line:column | Cursor location |
lualine_z | Current time | Clock |
Statusline Is Keyboard-Readable
- Mode: Tells you what mode you are in without looking at the cursor
- Diagnostics: See
✕ 3 ⚠ 2means 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
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
| Key | Action |
|---|---|
<leader>n | Show notification history |
<leader>un | Dismiss all visible notifications |
<leader>snl | Show last notification |
<leader>snh | Show full notification history |
<leader>sna | Show all (history + current) |
<leader>snd | Dismiss all |
<leader>snt | Open notification picker (Telescope/Snacks) |
Command-Line Mode
Noice enhances the command line (: mode):
| Key | Action |
|---|---|
: | 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. <leader>n ← Check notification history if needed
5. <leader>snl ← See the last message again
6. <leader>snd ← Dismiss all when clutter builds up
UI Toggles (Keyboard)
These toggle various UI elements. All start with <leader>u:
Visibility Toggles
| Key | Toggle | What It Does |
|---|---|---|
<leader>ul | Line Numbers | Show/hide absolute line numbers |
<leader>uL | Relative Numbers | Show/hide relative line numbers |
<leader>us | Spelling | Highlight misspelled words |
<leader>uw | Line Wrap | Soft-wrap long lines |
<leader>uc | Conceal Level | Hide/show markup characters |
<leader>uA | Tabline | Show/hide the bufferline tab bar |
<leader>ug | Indent Guides | Show/hide vertical indent lines |
<leader>uG | Git Signs | Show/hide git change indicators |
<leader>uS | Smooth Scroll | Enable/disable animated scrolling |
Diagnostics Toggles
| Key | Toggle | What It Does |
|---|---|---|
<leader>ud | Diagnostics | Show/hide all diagnostic signs |
<leader>uh | Inlay Hints | Show/hide LSP inline type hints |
Visual Toggles
| Key | Toggle | What It Does |
|---|---|---|
<leader>ub | Dark Background | Switch between light/dark theme variant |
<leader>uD | Dimming | Dim inactive windows/buffers |
<leader>ua | Animations | Enable/disable snacks animations |
<leader>uT | Treesitter | Enable/disable Treesitter highlighting |
<leader>uC | Colorschemes | Open colorscheme picker |
<leader>uz | Zen Mode | Full-screen focus mode (no tabs/status) |
<leader>uZ / <leader>wm | Zoom Mode | Maximize current window |
Info Toggles
| Key | Action |
|---|---|
<leader>ui | Inspect highlight group under cursor |
<leader>uI | Inspect Treesitter node under cursor |
Toggle Workflow
1. Open a file
2. <leader>uw ← Toggle wrap for long lines
3. <leader>ug ← Toggle indent guides for alignment
4. <leader>us ← Toggle spell check for editing prose
5. <leader>uL ← Toggle relative numbers for editing
6. <leader>uz ← Zen mode — no distractions
7. <leader>uz again ← Exit zen mode
8. <leader>uc ← Cycle colorschemes to try different themes
Zoom vs Zen Mode
| Mode | Key | What It Does |
|---|---|---|
| Zoom | <leader>wm or <leader>uZ | Maximize current window (hides other splits temporarily) |
| Zen | <leader>uz | Full-screen, no tabs/statusline, centered content |
Both are toggles — press the same key again to restore.
UI Component Summary
| Component | Purpose | Toggle/Open |
|---|---|---|
| Dashboard | Startup screen | Auto on nvim with no file |
| Bufferline | Tab bar for buffers | <leader>uA to toggle |
| Lualine | Statusline at bottom | Always visible |
| Noice | Notifications & command UI | <leader>n for history |
| Explorer | File tree sidebar | <leader>e |
| Picker | Fuzzy finder overlay | <leader>ff etc. |