My personalized Neovim configuration built on top of LazyVim.
- Dynamic theme system supporting multiple colorschemes:
- Tokyo Night
- Gruvbox
- Rose Pine
- Automatic theme synchronization with terminal (Ghostty)
- Light/Dark mode toggle support
- Transparent background options
- Claude Code integration
- Enhanced winbar configuration
- Custom icons and symbols
- Optimized editor settings
- Language-specific configurations
- Custom keymaps for my workflow
- Additional options and extras via
options.lua
- Organized plugin structure:
- UI enhancements
- Editor improvements
- LSP configurations
- Additional extras
- Custom libraries and (mini) plugins
.
├── colors/ # Custom colorschemes
├── lua/
│ ├── config/ # Core configurations
│ │ ├── autocmds.lua # Automatic commands
│ │ ├── keymaps.lua # Custom keybindings
│ │ ├── lazy.lua # Lazy.nvim configuration
│ │ └── options.lua # Neovim options and settings
│ ├── jswent/ # Personal customizations
│ │ ├── claude.lua
│ │ ├── colorscheme.lua
│ │ ├── transparent.lua
│ │ ├── winbar.lua
│ │ └── ...
│ └── plugins/ # Plugin configurations
│ ├── editor.lua
│ ├── lsp.lua
│ ├── ui.lua
│ └── ...
├── init.lua # Entry point
└── preview.png # Configuration preview image
-
Make sure you have Neovim >= 0.9.0 installed
-
Clone this repository to your configuration directory
git clone https://github.com/jswent/LazyVim.git ~/.config/LazyVim -
Backup your Neovim directory and create a symlink
ln -s ~/.config/LazyVim ~/.config/nvim
-
Start Neovim and let Lazy.nvim install all plugins
The configuration is organized into several key files in the lua/config/ directory:
options.lua: Core Neovim options and settingskeymaps.lua: Custom keybindings for improved workflowautocmds.lua: Automatic commands for file typeslazy.lua: Lazy.nvim plugin manager configuration
The configuration supports automatic theme synchronization with my terminal (Ghostty) and allows manual theme switching. You can override the theme in lua/config/options.lua:
-- set the colorscheme to gruvbox
vim.g.jswent_colorscheme = "gruvbox"The configuration includes built-in transparency support via the $TRANSPARENT environment variable. It's recommended to set this in your terminal emulator. For example, add the following to your shell's configuration:
export TRANSPARENT=trueYou can manually control transparency through:
-
Global setting in
lua/config/options.lua:-- Override default transparency detection vim.g.jswent_transparent = true -- or false
-
Commands during runtime:
:EnableTransparent- Enable transparency:DisableTransparent- Disable transparency:ToggleTransparent- Toggle transparency state
The transparency settings automatically reload affected plugins and colorschemes to ensure consistent appearance.
The Claude Code integration opens the TUI in a float using Snacks.terminal similar to the default lazygit functionality in LazyVim. The code can be found in jswent/claude.lua.
The integration creates two new keymaps for opening the float:
<leader>cc: Claude Code (Root Dir)<leader>cC: Claude Code (cwd)
Note: this overrides the default CodeLens keymaps in LazyVim
The integration is only loaded if claude is detected on your system, but if you wish to disable it you can use the setting in options.lua:
-- Use this to enable/disable Claude code integration (default true)
vim.g.jswent_claude_enabled = falseAll plugins are managed through Lazy.nvim and can be configured in the lua/plugins/ directory:
ui.lua: UI-related pluginseditor.lua: Editor enhancement pluginslsp.lua: Language Server Protocol configurationsextras.lua: Additional plugin configurations
This configuration is licensed under the same terms as LazyVim. See the LICENSE file for details.
