Skip to content

πŸ› οΈ NEO.ED my Neovim config powered by LazyVim, centered around web development. It's a git submodule that lives inside of my dotfiles.

License

Notifications You must be signed in to change notification settings

edheltzel/neoed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

91 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NOE.ED - Neovim Configuration

Note

This is a git submodule of edheltzel/dotfiles. The standalone repository is available at github.com/edheltzel/neoed

My LazyVim-based Neovim setup for web development

Neovim Lua

A carefully crafted Neovim configuration built on LazyVim, featuring extensive customizations, language support, and AI-powered tooling.

Warning

This is my personal Neovim setup and changes often. It's designed for my workflow and preferences. Feel free to get inspired, take what you want, and leave the rest to make it your own.

Table of Contents:

Features ↑

  • LazyVim Foundation - Built on LazyVim for a modern, modular setup
  • AI-Powered Coding - Claude Code, Codeium, and Windsurf integration
  • Multi-Language Support - Go, Python, Rust, TypeScript, PHP, Elixir, and more
  • Custom Keybindings - Vim motions with modern IDE shortcuts
  • Performance Optimized - Lazy loading and minimal startup time
  • Beautiful UI - Rose Pine theme with custom Lualine statusline
  • Git Integration - LazyGit, Gitsigns, and GitHub CLI
  • Modal Editing - Extensive custom keybindings for efficient editing
  • Snacks Dashboard - Custom start screen with quick actions

Prerequisites ↑

  • Neovim >= 0.9.0
  • Git >= 2.19.0
  • A Nerd Font (recommended: JetBrainsMono Nerd Font)
  • ripgrep (for Telescope)
  • fd (for file finding)
  • Node.js >= 18.0.0 (for LSP servers)
  • A terminal with true color support

For the full dotfiles setup:

cd ~/.dotfiles && make stow pkg=nvim

Installation ↑

As part of dotfiles (recommended)

This configuration is managed as a git submodule in my dotfiles. To install:

  1. Clone dotfiles with submodules:

    git clone --recurse-submodules https://github.com/edheltzel/dotfiles.git ~/.dotfiles
  2. Stow the nvim package:

    cd ~/.dotfiles
    make stow pkg=nvim
  3. Launch Neovim and let lazy.nvim install plugins:

    nvim
Standalone installation

If you want to use this configuration standalone (outside of the dotfiles):

  1. Backup your existing Neovim configuration:

    mv ~/.config/nvim ~/.config/nvim.backup
    mv ~/.local/share/nvim ~/.local/share/nvim.backup
  2. Clone this repository:

    git clone https://github.com/edheltzel/neoed.git ~/.config/nvim
  3. Launch Neovim:

    nvim

Configuration Structure ↑

The configuration follows a modular architecture for maintainability:

lua/
β”œβ”€β”€ config/                  # Core configuration
β”‚   β”œβ”€β”€ lazy.lua            # Plugin manager bootstrap
β”‚   β”œβ”€β”€ options.lua         # Vim options
β”‚   β”œβ”€β”€ keymaps.lua         # Custom keybindings
β”‚   β”œβ”€β”€ autocmds.lua        # Autocommands
β”‚   └── filetypes.lua       # Filetype detection
└── plugins/                 # Plugin configurations (organized by category)
    β”œβ”€β”€ ai/                 # AI integrations
    β”‚   β”œβ”€β”€ claudecode.lua  # Claude Code config
    β”‚   β”œβ”€β”€ opencode.lua    # OpenCode config
    β”‚   └── windsurf.lua    # Windsurf/Codeium
    β”œβ”€β”€ coding/             # Code editing tools
    β”‚   β”œβ”€β”€ emmet.lua       # Emmet expansion
    β”‚   └── surround.lua    # Surround text objects
    β”œβ”€β”€ editor/             # Editor enhancements
    β”‚   β”œβ”€β”€ git.lua         # Git integration
    β”‚   └── multicursor.lua # Multi-cursor editing
    β”œβ”€β”€ formatting/         # Code formatting
    β”‚   └── prettier.lua    # Prettier config
    β”œβ”€β”€ languages/          # Language-specific configs
    β”‚   β”œβ”€β”€ go.lua
    β”‚   β”œβ”€β”€ python.lua
    β”‚   β”œβ”€β”€ typescript.lua
    β”‚   β”œβ”€β”€ php.lua
    β”‚   β”œβ”€β”€ laravel.lua
    β”‚   └── ...
    β”œβ”€β”€ linting/            # Linting tools
    β”‚   └── biome.lua       # Biome linter
    β”œβ”€β”€ ui/                 # UI components
    β”‚   β”œβ”€β”€ colorscheme.lua # Theme config
    β”‚   β”œβ”€β”€ lualine.lua     # Statusline
    β”‚   └── lualine/        # Custom themes
    β”‚       β”œβ”€β”€ neoed.lua
    β”‚       β”œβ”€β”€ eldritch.lua
    β”‚       └── rose-pine.lua
    β”œβ”€β”€ utils/              # Utility plugins
    β”‚   └── snacks.lua      # Snacks dashboard & utilities
    └── disabled.lua        # Disabled plugins

Key Bindings ↑

Leader key: <Space>

General

Key Action
jj / jk Exit INSERT mode
U Redo (shift+u)
gh / gl Jump to beginning/end of line
<Alt-j/k> Move lines up/down
<Alt-C-Up/Down> Duplicate lines up/down
<Enter> Toggle code folding
<leader>nh Clear search highlights
<leader>ih Toggle inlay hints

File & Window Management

Key Action
<leader>fs Save file
<C-h/j/k/l> Navigate splits
<C->` Toggle terminal

AI/Claude Code (<leader>a)

Key Action
<C-A-S-c> Toggle Claude Code (floating)
<leader>ac Toggle Claude
<leader>af Focus Claude
<leader>ab Add current buffer to context
<leader>aa Accept diff
<leader>ad Deny diff

Search/Navigation

Key Action
<leader>jj Flash jump (leap to character)
<C-n> Multi-word editing

Git

Key Action
<leader>gg LazyGit (borderless)

Plugin Highlights ↑

  • lazy.nvim - Modern plugin manager with lazy loading
  • LazyVim - Neovim configuration framework
  • snacks.nvim - Dashboard, picker, explorer, terminal, and utilities
  • nvim-treesitter - Syntax highlighting and code parsing
  • nvim-lspconfig - LSP configuration for language servers
  • which-key - Keybinding discovery and documentation
  • flash.nvim - Enhanced navigation and search
  • LazyGit - Git integration with TUI
  • harpoon2 - Quick file navigation
  • mini-files - File explorer alternative
  • conform.nvim - Code formatting

Language Support ↑

The following languages are configured with LSP, formatting, and linting via LazyVim extras:

Core Languages:

  • Go (gopls, gofumpt, staticcheck)
  • Python (pyright, ruff)
  • Rust (rust-analyzer)
  • TypeScript/JavaScript (typescript-language-server, biome)
  • PHP (intelephense, Laravel support)
  • Elixir

Frontend:

  • Angular
  • Astro
  • Svelte
  • Vue
  • Tailwind CSS

Infrastructure:

  • Docker
  • Helm
  • Terraform
  • Twig

Config/Data:

  • YAML
  • TOML
  • JSON
  • Markdown (with MDX support)
  • Jinja templates

Theme & UI ↑

  • Colorscheme: Rose Pine Moon (also supports Eldritch)
  • Statusline: Custom Lualine with auto-detecting theme
  • Dashboard: Custom Snacks dashboard with NOE.ED branding
  • Explorer: Snacks explorer (neo-tree disabled)
  • Icons: Nerd Font icons throughout
  • Cursor: Cursorline and cursorcolumn enabled

The UI is designed to be clean, distraction-free, and aesthetically pleasing while remaining functional. The Lualine statusline auto-detects the current colorscheme and applies matching colors.

AI Integration ↑

This configuration includes multiple AI-powered tools:

  1. Claude Code - AI pair programmer with deep codebase understanding

    • Toggle floating window with <C-A-S-c> (Ctrl+Alt+Shift+C)
    • Toggle with <leader>ac
    • Add context with <leader>ab
    • Accept/deny diffs with <leader>aa/<leader>ad
    • Runs in a centered floating terminal (80% width/height)
  2. Codeium - AI code completion (via LazyVim extra)

    • Real-time inline suggestions
    • Context-aware completions
  3. Windsurf - Additional AI coding assistance

    • Alternative completion engine

Troubleshooting ↑

Plugins not loading

Try removing the lazy.nvim cache:

rm -rf ~/.local/share/nvim
nvim

Then restart Neovim and run :Lazy sync.

LSP not working

Check if the language server is installed:

:LspInfo

Install missing servers with Mason:

:Mason
Treesitter errors

Update treesitter parsers:

:TSUpdate

Or install specific parser:

:TSInstall <language>
Git submodule issues

If this configuration is out of sync as a submodule:

cd ~/.dotfiles/nvim/.config/nvim
git pull origin master
cd ~/.dotfiles
git add nvim/.config/nvim
git commit -m "Update neoed submodule"
Performance issues

Check startup time:

nvim --startuptime startup.log

Disable plugins temporarily by commenting them out in lua/plugins/.


Built with ❀️ by @edheltzel

About

πŸ› οΈ NEO.ED my Neovim config powered by LazyVim, centered around web development. It's a git submodule that lives inside of my dotfiles.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors 2

  •  
  •  

Languages