Skip to content

Neovim Configuration

This setup uses LazyVim as a base with custom plugins and keybindings optimized for Python, Rust, and web development.

Quick Start

bash
# Open Neovim
nvim

# Or use the alias
n

On first launch, LazyVim will automatically install all plugins.

Structure

nvim/.config/nvim/
├── init.lua              # Entry point
├── lazyvim.json          # LazyVim configuration
└── lua/
    ├── config/
    │   ├── autocmds.lua  # Auto commands
    │   ├── keymaps.lua   # Custom keybindings
    │   ├── lazy.lua      # Plugin manager setup
    │   └── options.lua   # Editor options
    └── plugins/
        ├── coding.lua    # Completion, snippets
        ├── colorscheme.lua
        ├── editor.lua    # File explorer, search
        ├── lsp.lua       # Language servers
        └── ui.lua        # UI enhancements

Key Mappings

Leader key is <Space>.

General

KeyAction
<Space>Show which-key menu
<Space>eToggle file explorer
<Space>ffFind files
<Space>fgLive grep
<Space>fbBrowse buffers
<Space>frRecent files

File Explorer (Neo-tree)

KeyAction
<Space>eToggle explorer
aAdd file/directory
dDelete
rRename
cCopy
mMove
yCopy path

LSP

KeyAction
gdGo to definition
grGo to references
KHover documentation
<Space>caCode actions
<Space>crRename symbol
<Space>cfFormat document
]dNext diagnostic
[dPrevious diagnostic

Git

KeyAction
<Space>ggOpen lazygit
<Space>gfGit file history
<Space>gbGit blame
]hNext hunk
[hPrevious hunk
<Space>hpPreview hunk
<Space>hsStage hunk
<Space>hrReset hunk

Windows & Buffers

KeyAction
<C-h/j/k/l>Navigate windows
<Space>-Split horizontal
<Space>|Split vertical
<S-h>Previous buffer
<S-l>Next buffer
<Space>bdDelete buffer

Terminal

KeyAction
<C-/>Toggle terminal
<Space>ftFloat terminal
<Esc><Esc>Exit terminal mode

Plugins

UI & Navigation

PluginPurpose
neo-treeFile explorer
telescopeFuzzy finder
which-keyKeybinding hints
bufferlineBuffer tabs
lualineStatus line

Coding

PluginPurpose
nvim-cmpCompletion engine
LuaSnipSnippets
nvim-autopairsAuto brackets
Comment.nvimSmart comments
nvim-surroundSurround text

LSP & Diagnostics

PluginPurpose
nvim-lspconfigLSP configuration
masonLSP installer
conform.nvimFormatting
nvim-lintLinting
trouble.nvimDiagnostics panel

Git

PluginPurpose
gitsignsGit decorations
lazygit.nvimLazygit integration
diffviewDiff viewer

Language Support

Python

  • LSP: pyright
  • Formatter: ruff
  • Linter: ruff
  • Debugger: debugpy
lua
-- Auto-activate virtual environments
vim.g.python3_host_prog = "~/.virtualenvs/neovim/bin/python"

Rust

  • LSP: rust-analyzer
  • Formatter: rustfmt

TypeScript/JavaScript

  • LSP: typescript-language-server
  • Formatter: biome or prettier
  • Linter: biome or eslint

Go

  • LSP: gopls
  • Formatter: gofmt

Colorscheme

Uses Catppuccin Mocha for a consistent look across all tools.

lua
-- lua/plugins/colorscheme.lua
return {
  "catppuccin/nvim",
  name = "catppuccin",
  priority = 1000,
  opts = {
    flavour = "mocha",
    transparent_background = false,
    integrations = {
      cmp = true,
      gitsigns = true,
      neo_tree = true,
      telescope = true,
      treesitter = true,
      which_key = true,
    },
  },
}

Tips

Update Plugins

vim
:Lazy update

Check Health

vim
:checkhealth

Mason (LSP Manager)

vim
:Mason

Telescope Commands

vim
:Telescope keymaps       " Search keybindings
:Telescope help_tags     " Search help
:Telescope commands      " Search commands

Released under the MIT License.