Skip to content

Latest commit

 

History

History
200 lines (155 loc) · 5.98 KB

File metadata and controls

200 lines (155 loc) · 5.98 KB

Intro to Neovim

Welcome! This cheatsheet introduces Neovim as configured with nixvim

It focuses on beginner tasks and the key plugins and keymaps in this setup.

Highlights of this configuration

  • Modern UI: Catppuccin theme, Lualine statusline, bufferline, icons
  • File explorer: Neo‑tree
  • Search: Telescope (find files, ripgrep live search)
  • LSP: Language Server Protocol (syntax, diagnostics, formatting on save)
  • Diagnostics UI: Trouble list; which‑key helper; notify popups
  • Terminal: ToggleTerm (inline terminal); LazyGit integration
  • Markdown: Live preview
  • Motions: hop and leap for fast jumping
  • Commenting, autocompletion, snippets, autopairs

What is the Leader key?

  • The “leader” is a prefix for custom shortcuts. In this config, it’s typically Space. Try pressing Space and you should see a which‑key popup listing available groups.
  • Notation: ff means press Space, then f, then f.

First steps

  • Start Neovim: from a terminal, run:
    nvim
  • Get help: press h to open a :help prompt, or H to open help for the word under cursor.
  • Escape Insert mode: press jk quickly (mapped to ).

Basic navigation and modes

  • Modes: Normal (default), Insert (i), Visual (v), Command (:)
  • Move: h left, j down, k up, l right
  • Words: w next word, b back word, e end of word
  • Lines: 0 start, ^ first non‑blank, $ end
  • Screens: Ctrl‑f forward page, Ctrl‑b back page
  • Search: /pattern, n next, N previous; clear highlights with nh

Open, create, read files

  • Open a file:
    :e path/to/file
  • Create a new file (just edit a new name):
    :e newfile.txt
  • Read a file into current buffer at cursor:
    :r path/to/otherfile
  • Read command output into buffer:
    :r !ls -la

Save and quit

  • Save: :w
  • Quit: :q
  • Save and quit: :wq (or :x)
  • Quit without saving: :q!
  • Save all: :wa
  • Close buffer (keep window): :bd

Windows and buffers

  • Split window: :sp (horizontal), :vsp (vertical)
  • Move between windows: Ctrl‑w h/j/k/l
  • Next/previous buffer: :bnext / :bprevious
  • List buffers: :ls

Clipboard, copy/paste

  • This config enables system clipboard (unnamedplus) and Wayland/X11 providers, so yanks go to your system clipboard.
  • Copy text: y in normal/visual (yy for a whole line)
  • Paste: p (after cursor) or P (before cursor)
  • System clipboard explicitly: "+y to copy, "+p to paste

File explorer (Neo‑tree)

  • Toggle Neo‑tree: e or fe
  • In Neo‑tree (common defaults):
    • Enter: open
    • a: add file/directory
    • r: rename
    • d: delete
    • y: copy, p: paste (within Neo‑tree)
    • s / v: open in split / vsplit (varies by setup)

Search (Telescope)

  • Find files by name: ff
  • Live grep (ripgrep content search): lg
  • Common Telescope controls: Up/Down to navigate, Enter to open, Ctrl‑q to send to quickfix list, Esc to close

Terminal and LazyGit

  • Toggle inline terminal: t
  • In the terminal buffer: press Ctrl‑\ then Ctrl‑n to return to Normal mode if needed
  • LazyGit integration is enabled; run:
    :LazyGit

Diagnostics and LSP

  • Diagnostic list (Trouble): dt (toggle)
  • Next/previous diagnostic: dj / dk
  • Show diagnostic for current line: dl
  • Formatting on save is enabled where supported. You can also run:
    :lua vim.lsp.buf.format()
  • LSP info / servers:
    :LspInfo

Comments, completion, pairs, snippets

  • Comments (comment‑nvim defaults):
    • gcc to toggle comment on current line
    • gc in visual mode to toggle selection
  • Autocompletion (nvim‑cmp): starts automatically; use Enter/Tab per your insert‑mode behavior
  • Auto‑pairs: brackets/quotes auto‑close
  • Snippets (luasnip): many language snippets are available; expand with Tab/Enter (depends on context)

Markdown preview

  • Toggle Markdown live preview: mp

Motion helpers

  • hop and leap are enabled for fast jumping; try searching for a character or pattern (consult :help hop and :help leap for details). Great for quickly moving around large files.

Spellcheck

  • English spellcheck is enabled with a programming wordlist that auto‑updates on first run.
  • Useful commands:
    • Toggle spell: :set spell / :set nospell
    • Next/prev misspelling: ]s / [s
    • Suggestions for word under cursor: z=
    • Add word to dictionary: zg
    • Undo added word: zw

Git integration

  • Signs in the gutter (gitsigns) show added/changed lines.
  • Diffview is available for rich diffs:
    :DiffviewOpen
    :DiffviewClose

Notifications and help

  • Notifications appear via nvim‑notify.
  • F1 is disabled to prevent accidental help popups; use:
    • h to open :help prompt
    • H for help on word under cursor

Which‑key and cheatsheet

  • Press the leader (Space) to see a which‑key popup of available keys.
  • A cheatsheet plugin is enabled—explore keymaps interactively.

Troubleshooting

  • Check health:
    :checkhealth
  • See messages/notifications:
    :messages
  • If completion/diagnostics feel off, reload LSP:
    :LspRestart

Quick reference

  • Modes: i (insert), v (visual), Esc (back to normal), : (command)
  • Save/quit: :w / :q / :wq / :q!
  • Open/create: :e file
  • Read file into current: :r file
  • Search: /pattern then n/N; clear highlights nh
  • File explorer: e (Neo‑tree)
  • Find files: ff; Live grep: lg
  • Terminal: t; LazyGit: :LazyGit
  • Diagnostics: dt (list), dj / dk (nav), dl (line)
  • Help: h, H

Tip: Start with which‑key. Press Space and follow the on‑screen hints to discover available actions in this setup.