Skip to content

dlemm/nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

31 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Neovim Configuration by Dennis Lemm

Personal development environment optimized for web development with React, TypeScript, Astro, and more.

Features

  • πŸš€ Fast startup with lazy.nvim plugin management
  • 🎨 Tokyo Night theme (matching my portfolio)
  • πŸ“ Web development ready - TypeScript, React, Astro, CSS, Markdown support
  • ⚑ Custom keybindings for maximum productivity
  • πŸ” Fuzzy finding with Telescope and FZF
  • 🌳 Git integration with Gitsigns, Fugitive, and LazyGit
  • πŸ“Š Beautiful statusline with Lualine (Tokyo Night theme)
  • 🎯 LSP configured for modern web development with Mason
  • 🎨 Multiple colorschemes - Tokyo Night, One Dark
  • πŸ“ Enhanced editing with autopairs, comments, and text objects
  • πŸ”§ Code formatting with Conform and Prettier support

Prerequisites

  • Neovim >= 0.9.0
  • Git for cloning and plugin management
  • Node.js >= 16 (for LSP servers and formatters)
  • A Nerd Font (I recommend Lekton Nerd Font)
  • ripgrep for fast text searching
  • fd for fast file finding (optional but recommended)

Installation

1. Backup existing configuration

# Backup your current config (if any)
mv ~/.config/nvim ~/.config/nvim.backup
mv ~/.local/share/nvim ~/.local/share/nvim.backup
mv ~/.local/state/nvim ~/.local/state/nvim.backup
mv ~/.cache/nvim ~/.cache/nvim.backup

2. Clone this configuration

git clone https://github.com/dlemm/nvim-config.git ~/.config/nvim

3. Start Neovim

nvim

On first startup, lazy.nvim will automatically:

  • Install itself
  • Download and install all configured plugins
  • Set up LSP servers via Mason
  • Configure formatters and linters

This may take a few minutes on the first run. Be patient! β˜•

4. Install additional tools

Most tools will be installed automatically, but you can manually manage them:

:Mason
:Lazy
:checkhealth

Key Features After Installation

Navigation

  • Leader key: <Space>
  • File explorer: <leader>ee (nvim-tree)
  • Fuzzy finder: <leader>ff (files)

Git Integration

  • Git status: <leader>lg (LazyGit)

LSP Actions

  • Go to definition: <leader>gd

Project Structure

The configuration is modular and organized as follows:

~/.config/nvim/
β”œβ”€β”€ init.lua                    # Entry point
β”œβ”€β”€ lazy-lock.json             # Plugin version lock file
β”œβ”€β”€ lua/
β”‚   β”œβ”€β”€ 314rate/              # Custom namespace
β”‚   β”‚   └── core/             # Core configuration
β”‚   β”‚       β”œβ”€β”€ init.lua      # Core initialization
β”‚   β”‚       β”œβ”€β”€ keymaps.lua   # Global keymaps
β”‚   β”‚       └── options.lua   # Neovim options
β”‚   └── plugins/              # Plugin configurations
β”‚       β”œβ”€β”€ lsp/              # LSP related configs
β”‚       β”‚   β”œβ”€β”€ lsp-servers.lua
β”‚       β”‚   β”œβ”€β”€ lspconfig.lua
β”‚       β”‚   └── mason.lua
β”‚       β”œβ”€β”€ autopairs.lua     # Auto-closing brackets
β”‚       β”œβ”€β”€ blink.lua         # Completion engine
β”‚       β”œβ”€β”€ cloak.lua         # Hide sensitive data
β”‚       β”œβ”€β”€ colorize.lua      # Color highlighting
β”‚       β”œβ”€β”€ comment.lua       # Smart commenting
β”‚       β”œβ”€β”€ conform.lua       # Code formatting
β”‚       β”œβ”€β”€ copilot.lua       # GitHub Copilot
β”‚       β”œβ”€β”€ cssvarviewer.lua  # CSS variable viewer
β”‚       β”œβ”€β”€ dressing.lua      # Better UI elements
β”‚       β”œβ”€β”€ fugitive.lua      # Git integration
β”‚       β”œβ”€β”€ fzf-lua.lua       # Fuzzy finder
β”‚       β”œβ”€β”€ gitsigns.lua      # Git signs in gutter
β”‚       β”œβ”€β”€ hardtime.lua      # Better vim habits
β”‚       β”œβ”€β”€ indent-blankline.lua # Indentation guides
β”‚       β”œβ”€β”€ init.lua          # Plugin manager setup
β”‚       β”œβ”€β”€ kanagawa.lua      # Kanagawa colorscheme
β”‚       β”œβ”€β”€ lazygit.lua       # Git GUI
β”‚       β”œβ”€β”€ linting.lua       # Code linting
β”‚       β”œβ”€β”€ lspsaga.lua       # Enhanced LSP UI
β”‚       β”œβ”€β”€ lualine.lua       # Statusline
β”‚       β”œβ”€β”€ luarocks.lua      # Lua package manager
β”‚       β”œβ”€β”€ markdown-preview.lua # Markdown preview
β”‚       β”œβ”€β”€ mdx.lua           # MDX support
β”‚       β”œβ”€β”€ noice.lua         # Better notifications
β”‚       β”œβ”€β”€ nvim-tree.lua     # File explorer
β”‚       β”œβ”€β”€ obsidian.lua      # Obsidian integration
β”‚       β”œβ”€β”€ onedark.lua       # One Dark colorscheme
β”‚       β”œβ”€β”€ pencil.lua        # Better writing
β”‚       β”œβ”€β”€ snacks.lua        # Utility functions
β”‚       β”œβ”€β”€ substitute.lua    # Better substitution
β”‚       β”œβ”€β”€ surround.lua      # Surround text objects
β”‚       β”œβ”€β”€ todo-comments.lua # Todo highlighting
β”‚       β”œβ”€β”€ toggleterm.lua    # Terminal management
β”‚       β”œβ”€β”€ tokyonight.lua    # Tokyo Night theme
β”‚       β”œβ”€β”€ treesitter.lua    # Syntax highlighting
β”‚       β”œβ”€β”€ trouble.lua       # Diagnostics panel
β”‚       β”œβ”€β”€ twilight.lua      # Focus mode
β”‚       β”œβ”€β”€ undotree.lua      # Undo history
β”‚       β”œβ”€β”€ vim-astro.lua     # Astro framework support
β”‚       β”œβ”€β”€ vim-coach.lua     # Vim learning
β”‚       β”œβ”€β”€ vim-maximizer.lua # Window maximizing
β”‚       β”œβ”€β”€ vim-visual-multi.lua # Multiple cursors
β”‚       β”œβ”€β”€ which-key.lua     # Keybinding help
β”‚       └── zen-mode.lua      # Distraction-free writing

Customization

Feel free to modify any settings to match your workflow:

  • Theme: Multiple themes available in respective plugin files
  • Keybindings: Modify lua/314rate/core/keymaps.lua
  • LSP settings: Adjust files in lua/plugins/lsp/
  • Plugin list: Edit individual plugin files or disable in lua/plugins/init.lua

Main Plugins Used

Core

  • lazy.nvim - Fast and modern plugin manager
  • mason.nvim - LSP server, formatter, and linter installer
  • nvim-treesitter - Advanced syntax highlighting

UI & Appearance

  • tokyo-night.nvim - Beautiful colorscheme
  • lualine.nvim - Customizable statusline
  • nvim-tree.lua - File explorer
  • which-key.nvim - Keybinding hints

LSP & Completion

  • nvim-lspconfig - LSP configuration
  • blink.cmp - Fast completion engine
  • conform.nvim - Code formatting
  • trouble.nvim - Diagnostics panel

Git Integration

  • gitsigns.nvim - Git decorations
  • fugitive.vim - Git commands
  • lazygit.nvim - Terminal Git UI

Development

  • telescope.nvim & fzf-lua - Fuzzy finding
  • copilot.lua - AI pair programming
  • todo-comments.nvim - Todo highlighting
  • markdown-preview.nvim - Live markdown preview

Technologies Supported

This configuration is optimized for:

  • Frontend: React, TypeScript, Next.js, Astro, Hugo, JavaScript, CSS/SCSS
  • Backend: Node.js, Python
  • Tools: Git, Bash, Docker
  • Markup: Markdown, MDX, JSON, YAML
  • Documentation: Obsidian notes integration

Troubleshooting

Font icons not displaying

Make sure you have a Nerd Font installed and set as your terminal font.

Formatter not working

# Check conform status
:ConformInfo

# Check available formatters
:Mason

Contributing

This is my personal configuration, but feel free to:

  • 🍴 Fork it for your own use
  • πŸ› Report issues you encounter
  • πŸ’‘ Suggest improvements via issues or PRs
  • πŸ“– Share your customizations

Inspiration

This configuration is inspired by:

License

MIT License - feel free to use and modify as you wish.

Author

Dennis Lemm

  • Portfolio: lemm.dev
  • GitHub: @dlemm
  • Currently building awesome web projects at JvM TECH

Built with ❀️ and lots of β˜•

About

My personal nvim setup

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages