Jump to content

Neovim: Difference between revisions

From Archive
FIX: Restore actual Neovim content
Redirect to Nvim (merged pages)
Tag: New redirect
 
Line 1: Line 1:
= Neovim =
#REDIRECT [[Nvim]]
 
Minimalist LazyVim configuration optimized for AI-enhanced workflows.
 
== Overview ==
 
'''Base:''' LazyVim 4 + Neovim 0.11+
 
'''Philosophy:''' Functional minimalism. No chrome, no distractions. Theme-agnostic design that works in light or dark mode.
 
'''Location:''' <code>~/.config/nvim/</code>
 
== Core Design ==
 
=== Visual Philosophy ===
* No visible mode indicator (trained muscle memory)
* Minimal statusline: <code>path/to/file.ts 142L AI</code>
* Geometric symbols for state (◆ modified, ◇ readonly)
* Auto light/dark via system preference
 
=== Statusline ===
'''Location:''' <code>lua/plugins/minimal-statusline.lua</code>
 
Shows only essential info:
* Context path (2 parent dirs + filename)
* Line count
* Diagnostics (error/warn/hint counts)
* LSP icons (󰛦 TypeScript, 󰡄 Vue, etc)
* Hot reload indicator (⟳)
* Copilot status (AI)
 
== AI Integration ==
 
=== Three-Layer AI System ===
 
# '''Copilot''' — Inline ghost text for line-level suggestions
#* Tab to accept, Alt-] to cycle
#* No popup menus, old school ghost text
# '''Avante''' — Claude Sonnet 4 chat in sidebar
#* <code><leader>aa</code> — Ask about code
#* <code><leader>ae</code> — Edit/refactor selection
# '''Claude Code''' — Full agent in tmux pane
#* Hot reload integration
#* Diffview for reviewing changes
 
=== Claude Code Workflow ===
'''Location:''' <code>lua/plugins/claude-code-workflow.lua</code>
 
'''Hot Reload:'''
* Filesystem watcher using native <code>fs_event</code> API
* Auto-reloads when Claude Code saves files
* Won't reload if you have unsaved changes
 
'''Diffview Integration:'''
* <code><leader>gd</code> — Open git diff view
* <code>]c</code> / <code>[c</code> — Jump between changes
* Auto-refreshes when Claude commits
 
'''Copy with Path:'''
* <code><leader>yr</code> — Yank selection with relative path
* <code><leader>ya</code> — Yank with absolute path
* Outputs: <code>src/file.ts:42-55</code> with fenced code
 
== Essential Plugins ==
 
=== Navigation ===
 
'''Oil.nvim''' — Filesystem as a buffer
<pre>
-        Open parent directory
<CR>    Open file/directory
g.      Toggle hidden files
</pre>
 
'''Harpoon''' — Quick access to 4 marked files
<pre>
<leader>ha    Add file to harpoon
<leader>hh    Toggle harpoon menu
<leader>h1-4  Jump to file 1-4
</pre>
 
'''Flash.nvim''' — Enhanced motions
<pre>
f/F    Jump to character
s      Multi-char search with labels
</pre>
 
'''vim-tmux-navigator''' — Seamless pane/window navigation
<pre>
Ctrl-h/j/k/l    Move between nvim splits AND tmux panes
</pre>
 
=== Editing ===
 
'''nvim-surround''' — Surround text objects
<pre>
ysiw"    Wrap word in quotes
cs"'    Change " to '
ds"      Delete surrounding quotes
</pre>
 
'''Dial.nvim''' — Smart increment/decrement
<pre>
<C-a> on true  → false
<C-a> on 1    → 2
<C-a> on date  → next date
</pre>
 
=== Focus ===
 
'''Zen-mode''' — Distraction-free writing
<pre>
:ZenMode    120 char width, 95% backdrop
</pre>
 
'''Twilight''' — Dim inactive code blocks
 
=== Git ===
 
'''Gitsigns''' — Minimal change indicators in sign column
<pre>
│    Added line
┆    Untracked
_    Deleted
</pre>
 
'''Git-conflict''' — Visual merge conflict handling
<pre>
co    Choose ours
ct    Choose theirs
cb    Choose both
[x/]x Jump between conflicts
</pre>
 
'''Diffview''' — Side-by-side diffs
 
=== HTTP ===
 
'''Kulala.nvim''' — HTTP client in buffer
<pre>
<CR>      Execute request under cursor
[r / ]r  Jump between requests
<leader>rc Copy as cURL
</pre>
 
=== Debugging ===
 
'''nvim-dap''' — Debug adapter protocol
<pre>
<leader>db    Toggle breakpoint
<leader>dc    Start/continue
<leader>di    Step into
<leader>do    Step over
</pre>
 
== Theme System ==
 
=== Vulpes Reddish ===
'''Location:''' <code>colors/vulpes_reddish_dark.lua</code>, <code>colors/vulpes_reddish_light.lua</code>
 
Custom warm theme with:
* Dark: Warm reds on #121212 background
* Light: Deep reds on #ebebeb background
* Full treesitter + LSP + UI support
* Matches Ghostty, tmux, lazygit, yazi
 
=== Auto Dark Mode ===
'''Location:''' <code>lua/plugins/auto-dark-mode.lua</code>
 
Monitors system preference every 1 second. Seamless switching.
 
== Training Mode ==
 
=== Hardtime ===
'''Location:''' <code>lua/plugins/hardtime.lua</code>
 
Khabib-style vim motion coaching:
* Blocks hjkl spam after 1 press
* Arrow keys completely disabled
* Custom hints for better motions
 
<pre>
"Brother, use '}' for paragraph, ']f' for function,
']d' for diagnostic, '/' for search. This is Dagestani way."
</pre>
 
== Dashboard ==
 
'''Location:''' <code>lua/plugins/snacks.lua</code>
 
Minimal startup screen with fox emoji and quick actions:
* Find File, New File, Recent Files
* Find Text, Config, Restore Session
 
== Keybinding Philosophy ==
 
=== Leader Groups ===
* <code><leader>f*</code> — Telescope find commands
* <code><leader>h*</code> — Harpoon quick files
* <code><leader>a*</code> — Avante AI commands
* <code><leader>g*</code> — Git commands
* <code><leader>y*</code> — Yank with context
 
=== Motion Philosophy ===
* Prefer semantic motions (<code>]f</code> next function, <code>]d</code> next diagnostic)
* Use <code>/</code> search for distant jumps
* Flash labels for mid-range jumps
* hjkl only for fine adjustment
 
== Performance ==
 
* 45+ plugins, all lazy-loaded
* Startup: < 100ms
* Idle memory: ~50MB
* Treesitter parsing: on-demand
 
== File Structure ==
 
<pre>
~/.config/nvim/
├── init.lua                # Entry point
├── lazy-lock.json          # Plugin versions
├── colors/                  # Vulpes themes
├── lua/
│  ├── config/            # LazyVim config
│  ├── plugins/            # Plugin specs
│  │  ├── minimal-statusline.lua
│  │  ├── claude-code-workflow.lua
│  │  ├── copilot-inline.lua
│  │  ├── oil.lua
│  │  ├── harpoon.lua
│  │  ├── avante.lua
│  │  └── ...
│  └── custom/            # Custom modules
│      ├── hotreload.lua
│      └── directory-watcher.lua
└── PLUGINS.md              # Full plugin docs
</pre>
 
== Installation ==
 
<pre>
# Backup existing config
mv ~/.config/nvim ~/.config/nvim.backup
 
# Clone
git clone https://github.com/ejfox/nvim ~/.config/nvim
 
# Launch (plugins install automatically)
nvim
</pre>
 
== See Also ==
 
* [[Dotfiles]] — Full configuration overview
* [[Vulpes Shader System]] — Ghostty visual effects
* [[Tmux]] — Terminal multiplexer config
* [[Lazygit]] — Git TUI
 
----
[[Category:Technical Systems]]
[[Category:Development]]
 
{{Navbox Technical}}

Latest revision as of 04:59, 15 January 2026

Redirect to: