Skip to main content
There are several ways to update plugins:Using Lazy.nvim UI:
  1. Open Lazy panel: <Space>ln (see lua/magictt/core/keymaps.lua:9)
  2. Press U to update all plugins
  3. Press S to sync (clean, install, and update)
Using commands:
:Lazy update
Or update specific plugins:
:Lazy update nvim-treesitter telescope.nvim
Auto-updates:The configuration has checker.enabled = true (see lua/magictt/lazy.lua:15-17), which checks for updates automatically but doesn’t notify to avoid interruptions.
Check active LSP servers:
:LspInfo
This shows:
  • Which servers are attached to the current buffer
  • Server configuration details
  • Server status (active/inactive)
Check LSP server logs:
:lua vim.cmd('e ' .. vim.lsp.get_log_path())
Check diagnostics:
  • Show line diagnostics: <Space>d (see lua/magictt/lsp.lua:35)
  • Show buffer diagnostics: <Space>D (see lua/magictt/lsp.lua:32)
  • Navigate to next diagnostic: ]d
  • Navigate to previous diagnostic: [d
Restart LSP server:
:LspRestart
Or use the keybinding: <Space>rs (see lua/magictt/lsp.lua:51)
Plugins are managed by Lazy.nvim and installed in:
~/.local/share/nvim/lazy/
View plugin directory:
ls ~/.local/share/nvim/lazy/
Lazy.nvim location:Lazy.nvim itself is bootstrapped to:
~/.local/share/nvim/lazy/lazy.nvim
(See lua/magictt/lazy.lua:1)Mason tools location:LSP servers, formatters, and linters installed via Mason are stored in:
~/.local/share/nvim/mason/
Configuration location:Your Neovim configuration files are in:
~/.config/nvim/
Or check dynamically:
:lua print(vim.fn.stdpath('config'))
All keybindings with leader (<Space>):
:nmap <Space>
Check specific keybinding:
:nmap <Space>ff
See where a keybinding was defined:
:verbose nmap <Space>mm
Core keybindings (from lua/magictt/core/keymaps.lua):
  • jk (Insert mode) - Exit to Normal mode
  • <Space>pv - Open file explorer (netrw)
  • <Space>mm - Open Mason panel
  • <Space>ln - Open Lazy panel
  • <Space>nh - Clear search highlights
Window management:
  • <Space>sv - Split vertically
  • <Space>sh - Split horizontally
  • <Space>se - Equal split size
  • <Space>sx - Close split
Tab management:
  • <Space>to - New tab
  • <Space>tx - Close tab
  • <Space>tn - Next tab
  • <Space>tp - Previous tab
LSP keybindings (from lua/magictt/lsp.lua, only work when LSP is attached):
  • gR - LSP references
  • gD - Go to declaration
  • gd - Go to definition
  • gi - LSP implementations
  • gt - Type definitions
  • <Space>ca - Code actions
  • <Space>rn - Rename
  • K - Hover documentation
Telescope keybindings (from lua/magictt/plugins/telescope.lua):
  • <Space>ff - Find files
  • <Space>fr - Recent files
  • <Space>fs - Live grep
  • <Space>fc - Grep string under cursor
  • <Space>ft - Find todos
File explorer (from lua/magictt/plugins/nvim-tree.lua):
  • <Space>ee - Toggle nvim-tree
  • <Space>ef - Toggle on current file
  • <Space>ec - Collapse tree
  • <Space>er - Refresh tree
Mason (LSP/tool installer):Using keybinding:
<Space>mm
Or using command:
:Mason
(Keybinding defined in lua/magictt/core/keymaps.lua:8)In Mason UI:
  • i - Install tool under cursor
  • u - Update tool under cursor
  • X - Uninstall tool under cursor
  • g? - Show help
Lazy (plugin manager):Using keybinding:
<Space>ln
Or using command:
:Lazy
(Keybinding defined in lua/magictt/core/keymaps.lua:9)In Lazy UI:
  • I - Install missing plugins
  • U - Update plugins
  • S - Sync (clean, install, update)
  • X - Clear finished tasks
  • C - Check for updates
  • R - Restore plugins to lockfile state
  • ? - Show help
Minimum version:Neovim 0.9.0 or higher is recommended for this configuration.Check your version:
nvim --version
Or from within Neovim:
:version
Why 0.9.0+?The configuration uses modern features:
  • vim.diagnostic.jump() (used in lua/magictt/lsp.lua:38-45)
  • Enhanced LSP capabilities
  • Improved Treesitter integration
  • Lazy.nvim requires Neovim 0.8.0+
Upgrade Neovim:Verify features:Check if your Neovim build has required features:
:checkhealth
Auto-format is configured for JavaScript and TypeScript files in lua/magictt/plugins/lsp/lsp.lua:19-24.Temporary disable (current session):
:autocmd! BufWritePre *.js,*.ts
Permanent disable:Comment out or remove the auto-format configuration:
-- lua/magictt/plugins/lsp/lsp.lua
-- Comment out lines 19-24:
-- vim.api.nvim_create_autocmd("BufWritePre", {
--   pattern = { "*.js", "*.ts" },
--   callback = function()
--     vim.lsp.buf.format({ async = true })
--   end,
-- })
Disable for specific file types:Modify the pattern array to exclude certain file types:
pattern = { "*.ts" }, -- Only format TypeScript, not JavaScript
Manual formatting:You can still format manually:
:lua vim.lsp.buf.format({ async = true })
Step 1: Install via MasonOpen Mason and install the server:
:Mason
Find the server and press i to install.Step 2: Add to ensure_installed (optional)To automatically install on setup, add to lua/magictt/plugins/lsp/mason.lua:6-18:
ensure_installed = {
  "ts_ls",
  "html",
  -- ... existing servers ...
  "rust_analyzer", -- Add your server here
},
Step 3: Configure server (if needed)Most servers work out of the box with the default configuration. For custom settings, you can configure them in a separate file.Example: Adding Rust analyzer with custom settings:Create lua/magictt/plugins/lsp/rust.lua:
return {
  "neovim/nvim-lspconfig",
  opts = function(_, opts)
    local lspconfig = require("lspconfig")
    lspconfig.rust_analyzer.setup({
      capabilities = require("cmp_nvim_lsp").default_capabilities(),
      settings = {
        ["rust-analyzer"] = {
          cargo = {
            allFeatures = true,
          },
        },
      },
    })
  end,
}
Verify installation:Open a file of the language type and check:
:LspInfo
The colorscheme is configured in lua/magictt/plugins/colorscheme.lua.Check current colorscheme:
:colorscheme
Change colorscheme temporarily:
:colorscheme tokyonight
Change colorscheme permanently:Edit lua/magictt/plugins/colorscheme.lua and modify the configuration.Install a new colorscheme:Add to lua/magictt/plugins/colorscheme.lua or create a new plugin file:
return {
  "catppuccin/nvim",
  name = "catppuccin",
  priority = 1000,
  config = function()
    vim.cmd([[colorscheme catppuccin]])
  end,
}
Popular colorschemes:
  • folke/tokyonight.nvim
  • catppuccin/nvim
  • EdenEast/nightfox.nvim
  • rebelot/kanagawa.nvim
  • navarasu/onedark.nvim
View diagnostics for current line:
<Space>d
Or:
:lua vim.diagnostic.open_float()
View all diagnostics in buffer:
<Space>D
Or:
:Telescope diagnostics bufnr=0
Navigate diagnostics:
  • Next diagnostic: ]d
  • Previous diagnostic: [d
These keybindings automatically show the diagnostic in a floating window (see lua/magictt/lsp.lua:38-45).View all project diagnostics:
:Telescope diagnostics
Diagnostic symbols:The configuration uses custom icons (see lua/magictt/lsp.lua:60-66):
    • Errors
    • Warnings
  • 󰠠 - Hints
    • Info
Virtual text:Diagnostic messages appear inline with the code (configured in lua/magictt/core/options.lua:47-56).
Core Telescope commands:
  • <Space>ff - Find files in current directory
  • <Space>fr - Find recent files
  • <Space>fs - Live grep (search text in files)
  • <Space>fc - Grep string under cursor
  • <Space>ft - Find TODO comments
Inside Telescope:
  • <C-j> / <C-k> - Move down/up in results (see lua/magictt/plugins/telescope.lua:19-20)
  • <C-q> - Send selected to quickfix list
  • <CR> (Enter) - Open selected file
  • <Esc> - Close Telescope
Additional Telescope commands:
:Telescope buffers
:Telescope help_tags
:Telescope commands
:Telescope keymaps
:Telescope git_files
:Telescope git_commits
Search hidden files:
:Telescope find_files hidden=true
Search in specific directory:
:Telescope find_files cwd=~/projects/myproject
LSP with Telescope (available when LSP is attached):
  • gR - LSP references
  • gi - LSP implementations
  • gt - LSP type definitions
  • <Space>D - Buffer diagnostics
Automatic bootstrap sequence:
  1. Lazy.nvim installation (see lua/magictt/lazy.lua:1-11):
    • Clones Lazy.nvim from GitHub
    • Installs to ~/.local/share/nvim/lazy/lazy.nvim
  2. Plugin installation:
    • Lazy.nvim reads plugin specs from lua/magictt/plugins/
    • Installs all defined plugins
    • Runs build commands where specified
  3. Mason auto-install:
    • LSP servers listed in ensure_installed are queued
    • Tools listed in mason-tool-installer are queued
  4. Treesitter parser installation (see lua/magictt/plugins/treesitter.lua:13-36):
    • Parsers for configured languages are installed
    • May take a few minutes on first launch
Expected behavior:
  • Multiple installation windows will appear
  • You may see compilation output for Treesitter parsers
  • Some features won’t work until installation completes
After first launch:
  • Restart Neovim to ensure all plugins are loaded
  • Run :checkhealth to verify everything is working
If something fails:
  • Check :Lazy for plugin installation status
  • Check :Mason for LSP server installation status
  • Check :TSInstallInfo for Treesitter parser status
  • Run :checkhealth for detailed diagnostics

Build docs developers (and LLMs) love