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.