Thanks to visit codestin.com
Credit goes to github.com

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

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

NOE.ED - Neovim Configuration

        โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—    โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—
        โ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ•โ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—
        โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘
        โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•  โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•”โ•โ•โ•  โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘
        โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•
        โ•šโ•โ•  โ•šโ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ•โ•โ•šโ•โ•โ•โ•โ•โ•

A modern, LazyVim-based Neovim configuration optimized for web development, AI-assisted coding, and multi-language support.

Features

  • LazyVim Foundation: Built on LazyVim for a solid, well-maintained base
  • AI Integration: Claude Code, Codeium, and Supermaven support
  • Multi-Language: Go, Python, TypeScript, PHP/Laravel, Rust, and more
  • Hybrid Formatting: Biome-first with Prettier fallback
  • Custom Theme: Eldritch colorscheme with custom lualine statusline
  • Modern UI: Snacks.nvim for explorer, picker, dashboard, and terminal

Table of Contents

  1. Quick Start
  2. Architecture
  3. Plugin Categories
  4. Keybindings Reference
  5. Language Support
  6. Configuration Guide
  7. Workflows

Quick Start

Prerequisites

  • Neovim >= 0.10.0
  • Git
  • A Nerd Font (for icons)
  • Node.js (for LSP servers)
  • Ripgrep (for search)

Installation

This configuration is part of a dotfiles repository managed with GNU Stow:

# Clone the dotfiles repository
git clone https://github.com/yourusername/dotfiles ~/.dotfiles

# Stow the nvim package
cd ~/.dotfiles
make stow pkg=nvim

# Or manually
stow -v nvim

First Launch

  1. Open Neovim: nvim
  2. Lazy.nvim will automatically install all plugins
  3. Run :Mason to install LSP servers and formatters
  4. Run :LazyExtras to enable additional language packs

Architecture

Directory Structure

lua/
โ”œโ”€โ”€ config/              # Core configuration
โ”‚   โ”œโ”€โ”€ lazy.lua        # Plugin manager bootstrap
โ”‚   โ”œโ”€โ”€ options.lua     # Vim options
โ”‚   โ”œโ”€โ”€ keymaps.lua     # Custom keybindings
โ”‚   โ”œโ”€โ”€ autocmds.lua    # Autocommands
โ”‚   โ””โ”€โ”€ filetypes.lua   # Custom filetype associations
โ”‚
โ””โ”€โ”€ plugins/             # Plugin configurations
    โ”œโ”€โ”€ disabled.lua    # Disabled plugins (neo-tree)
    โ”‚
    โ”œโ”€โ”€ ai/             # AI assistants
    โ”‚   โ”œโ”€โ”€ claudecode.lua
    โ”‚   โ”œโ”€โ”€ opencode.lua
    โ”‚   โ””โ”€โ”€ windsurf.lua
    โ”‚
    โ”œโ”€โ”€ coding/         # Code editing
    โ”‚   โ”œโ”€โ”€ emmet.lua
    โ”‚   โ””โ”€โ”€ surround.lua
    โ”‚
    โ”œโ”€โ”€ editor/         # Editor enhancements
    โ”‚   โ”œโ”€โ”€ git.lua
    โ”‚   โ”œโ”€โ”€ ghostty.lua
    โ”‚   โ””โ”€โ”€ multicursor.lua
    โ”‚
    โ”œโ”€โ”€ formatting/     # Code formatters
    โ”‚   โ””โ”€โ”€ prettier.lua
    โ”‚
    โ”œโ”€โ”€ linting/        # Linters
    โ”‚   โ””โ”€โ”€ biome.lua
    โ”‚
    โ”œโ”€โ”€ languages/      # Language-specific configs
    โ”‚   โ”œโ”€โ”€ go.lua
    โ”‚   โ”œโ”€โ”€ python.lua
    โ”‚   โ”œโ”€โ”€ typescript.lua
    โ”‚   โ”œโ”€โ”€ php.lua
    โ”‚   โ”œโ”€โ”€ laravel.lua
    โ”‚   โ”œโ”€โ”€ astro.lua
    โ”‚   โ”œโ”€โ”€ docker.lua
    โ”‚   โ”œโ”€โ”€ jinja.lua
    โ”‚   โ”œโ”€โ”€ mdx.lua
    โ”‚   โ”œโ”€โ”€ tailwind.lua
    โ”‚   โ””โ”€โ”€ intelephense.lua
    โ”‚
    โ”œโ”€โ”€ ui/             # UI customization
    โ”‚   โ”œโ”€โ”€ colorscheme.lua
    โ”‚   โ”œโ”€โ”€ eldritch.lua
    โ”‚   โ”œโ”€โ”€ lualine.lua
    โ”‚   โ”œโ”€โ”€ treesitter-context.lua
    โ”‚   โ””โ”€โ”€ lualine/
    โ”‚       โ”œโ”€โ”€ neoed.lua      # Theme adapter
    โ”‚       โ”œโ”€โ”€ eldritch.lua   # Eldritch theme
    โ”‚       โ””โ”€โ”€ rose-pine.lua  # Rose Pine theme
    โ”‚
    โ””โ”€โ”€ utils/          # Utilities
        โ””โ”€โ”€ snacks.lua

Plugin Load Order

  1. init.lua - Entry point, loads config.lazy
  2. config/lazy.lua - Bootstraps lazy.nvim, loads filetypes
  3. LazyVim base plugins load
  4. Custom plugin specs load (in directory import order)
  5. config/options.lua - Vim options
  6. config/keymaps.lua - Keybindings (VeryLazy)
  7. config/autocmds.lua - Autocommands (VeryLazy)

Plugin Categories

AI Assistants

Plugin Description Key Binding
claudecode.nvim Claude Code integration <C-A-S-c>
codeium AI code completion (via LazyExtras)

Claude Code Configuration (lua/plugins/ai/claudecode.lua):

  • Floating window (80% width/height)
  • Rounded border
  • --dangerously-skip-permissions mode enabled

Editor Enhancements

Plugin Description Key Bindings
multicursor.nvim Multiple cursors <C-S-l>, <C-A-down/up>
gitsigns.nvim Git integration Current line blame enabled
flash.nvim Motion plugin <leader>jj

Formatting Stack

Formatter Priority (from lua/plugins/formatting/prettier.lua):

  1. Biome (primary for JS/TS/JSON/CSS)
  2. Prettier (fallback for Biome-supported, primary for HTML/MD)
  3. yamlfmt (YAML files)

UI Components

Component Plugin Configuration
Colorscheme eldritch.nvim Dark theme with dim inactive
Statusline lualine.nvim Custom NEO.ED theme
File Explorer snacks.explorer Right sidebar, hidden files
Picker snacks.picker Default layout
Dashboard snacks.dashboard Custom NEO.ED header
Terminal snacks.terminal Borderless float

Keybindings Reference

See CHEATSHEET.md for the complete keybindings reference.


Language Support

Enabled LazyVim Extras

From lazyvim.json:

AI:

  • ai.claudecode - Claude Code integration
  • ai.codeium - AI completion

Coding:

  • coding.mini-surround - Surround text objects
  • dap.core - Debug adapter protocol

Editor:

  • editor.harpoon2 - Quick file navigation
  • editor.mini-files - File browser
  • editor.snacks_explorer - Snacks file explorer
  • editor.snacks_picker - Snacks picker

Formatting:

  • formatting.biome - Biome formatter/linter

Languages:

  • lang.angular - Angular
  • lang.astro - Astro
  • lang.docker - Docker/Compose
  • lang.elixir - Elixir
  • lang.go - Go
  • lang.helm - Helm charts
  • lang.json - JSON
  • lang.markdown - Markdown
  • lang.php - PHP
  • lang.python - Python
  • lang.rust - Rust
  • lang.svelte - Svelte
  • lang.tailwind - Tailwind CSS
  • lang.terraform - Terraform
  • lang.toml - TOML
  • lang.typescript - TypeScript
  • lang.vue - Vue
  • lang.yaml - YAML

Utilities:

  • util.dot - Dotfile support
  • util.mini-hipatterns - Pattern highlighting

Language-Specific Features

Go (lua/plugins/languages/go.lua)

LSP: gopls with enhanced settings

  • gofumpt formatting
  • Inlay hints (parameters, types, values)
  • Static analysis (nilness, unused params/writes)
  • Semantic tokens

Testing: neotest-golang

Python (lua/plugins/languages/python.lua)

LSP: Pyright + Ruff

  • Pyright for type checking
  • Ruff for linting (replaces ESLint behavior)

DAP: debugpy integration

Virtual Environments: venv-selector.nvim

TypeScript (lua/plugins/languages/typescript.lua)

LSP: vtsls (not tsserver)

  • Complete function calls
  • Auto-update imports on file move
  • Inlay hints
  • Move to file refactoring

DAP: js-debug-adapter

Custom Icons: eslintrc, package.json, tsconfig, etc.

PHP (lua/plugins/languages/php.lua)

LSP: Intelephense

  • Blade template support
  • Large file support (5MB)

Tools: PHPStan, Pint, blade-formatter

DAP: php-debug-adapter

Laravel (lua/plugins/languages/laravel.lua)

Plugin: adalessa/laravel.nvim

  • Artisan commands
  • Route navigation
  • Make generators
  • View finder

Configuration Guide

Vim Options (lua/config/options.lua)

-- UI
opt.cursorline = true       -- Highlight current line
opt.cursorcolumn = true     -- Highlight current column
opt.scrolloff = 999         -- Keep cursor centered
opt.wrap = true             -- Wrap long lines

-- Files
opt.swapfile = false        -- No swap files
opt.backup = false          -- No backup files
opt.undofile = true         -- Persistent undo

-- Timing
o.timeoutlen = 250          -- Key sequence timeout

-- Platform
g.codeium_arch = "arm64"
g.codeium_os = "Darwin"

Custom Filetypes (lua/config/filetypes.lua)

Extension/Pattern Filetype
.njk htmldjango
.webc htmldjango
.conf sh
*.blade.php blade
*.svg html

Autocommands (lua/config/autocmds.lua)

  1. YAML Frontmatter: Enables YAML syntax in template files
  2. Help Windows: Opens help in vertical split
  3. Auto Resize: Equalizes splits on window resize
  4. No Auto Comment: Disables automatic comment continuation
  5. Dotenv Syntax: Highlights .env files as dosini

Theme Configuration

Colorscheme: Eldritch (lua/plugins/ui/eldritch.lua)

  • Transparent: false
  • Dim inactive: true
  • Dark sidebars and floats
  • Custom background: #171928

Statusline: Custom lualine theme (lua/plugins/ui/lualine/neoed.lua)

  • Centered filename
  • Mode indicator (left and right)
  • Project directory
  • Git branch and diff
  • Diagnostics
  • Macro recording indicator

Workflows

Daily Development

  1. Start Neovim - Dashboard shows recent files, dotfiles shortcuts
  2. Open Project - Use <leader>ff for file picker
  3. Navigate Files - Use Snacks explorer (right sidebar)
  4. Edit with Multi-Cursor - <C-n> for next match
  5. Format on Save - Biome/Prettier automatically formats

Git Workflow

  1. Open Lazygit: <leader>gg
  2. View inline blame (automatic via gitsigns)
  3. Stage changes in Lazygit
  4. Commit with conventional messages

Debugging (DAP)

  1. Set breakpoints
  2. Start debug session with language-specific commands
  3. Use DAP UI for inspection

AI-Assisted Coding

  1. Toggle Claude Code: <C-A-S-c>
  2. Floating window appears (80% size)
  3. Ask questions or request code changes
  4. Claude Code can read/modify files directly

Laravel Development

  1. Open Laravel picker: <leader>LL
  2. Run Artisan commands: <leader>La
  3. Navigate routes: <leader>Lr
  4. Generate code: <leader>Lm

Troubleshooting

Plugin Issues

:Lazy          " Open plugin manager
:Lazy sync     " Sync plugins
:Lazy health   " Check plugin health

LSP Issues

:LspInfo       " Check LSP status
:LspLog        " View LSP logs
:Mason         " Manage LSP servers

Performance

:LazyProfile   " Profile startup time

Reload Configuration

:source %      " Reload current file
" Or restart Neovim

License

Part of the dotfiles repository. See main repository for license information.


Generated documentation for NOE.ED Neovim configuration

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

Languages