A modern Neovim configuration using Lazy.nvim as the plugin manager, with LazyGit integration and seamless tmux navigation.
- 🚀 Fast startup time
- 📦 Lazy-loaded plugins
- 🎨 Catppuccin colorscheme
- 🔍 Telescope for fuzzy finding
- 🌳 Treesitter for syntax highlighting and code navigation
- 🧠 LSP for code intelligence
- 📝 Autocompletion with nvim-cmp
- 🔄 Git integration with Gitsigns and LazyGit
- 📊 Beautiful statusline with Staline
- 🔧 Code formatting with conform.nvim
- 🔑 Which-key for keybinding help
- 🖥️ Seamless navigation between Neovim and tmux panes
- Harpoon: Quick file navigation and bookmarking system
- SuperMaven: AI-powered coding assistant
- LaTeX: Full LaTeX editing and compilation support with LuaTeX and Skim
- Enhanced syntax highlighting with Treesitter
- Math formula concealment and highlighting
- Color highlighting for color codes
- Automatic spell checking for LaTeX documents
- Neovim >= 0.9.0
- Git
- A Nerd Font (for icons)
- ripgrep (for Telescope)
- lazygit (for LazyGit integration)
- tmux (for tmux integration)
- latexmk and texlab (for LaTeX support)
- Skim PDF viewer (for LaTeX preview on macOS)
- Make sure you have Neovim 0.9.0 or later installed
- Install LazyGit: https://github.com/jesseduffield/lazygit#installation
- Install tmux: https://github.com/tmux/tmux/wiki/Installing
- Clone this repository to your Neovim config directory:
# Backup your existing config if needed
mv ~/.config/nvim ~/.config/nvim.bak
# Clone this repository
git clone https://github.com/yourusername/nvim-config.git ~/.config/nvim- Copy the tmux configuration:
cp ~/.config/nvim/tmux.conf ~/.tmux.conf- Install the tmux plugin manager:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm- Start Neovim:
nvimLazy.nvim will automatically install all plugins on the first run.
- In tmux, press
prefix + I(capital I) to install the tmux plugins.
If you want to integrate parts of this configuration into your existing setup:
- Copy the relevant files from the
lua/pluginsdirectory - Ensure your init.lua properly loads the Lazy plugin manager
.
├── init.lua # Main entry point
├── lua
│ ├── config
│ │ ├── autocmds.lua # Autocommands
│ │ ├── keymaps.lua # Key mappings
│ │ └── options.lua # Neovim options
│ └── plugins
│ ├── cmp.lua # Completion
│ ├── colorscheme.lua # Colorscheme
│ ├── conform.lua # Formatter
│ ├── gitsigns.lua # Git signs
│ ├── lazygit.lua # LazyGit integration
│ ├── lsp.lua # LSP configuration
│ ├── statusline.lua # Statusline
│ ├── telescope.lua # Fuzzy finder
│ ├── tmux.lua # Tmux integration
│ ├── treesitter.lua # Syntax highlighting
│ └── which-key.lua # Keybinding help
├── tmux.conf # Tmux configuration
└── README.md # This file
<Space>- Leader key<Esc>- Clear search highlights<C-h/j/k/l>- Navigate between splits (works with tmux)<C-Up/Down/Left/Right>- Resize windows<C-s>- Save file<leader>q- Quit<leader>Q- Force quit all
<leader>ff- Find files<leader>fg- Live grep<leader>fb- Find buffers<leader>fh- Help tags<leader>fr- Recent files
gd- Go to definitiongr- Go to referencesK- Hover documentation<leader>rn- Rename<leader>ca- Code action<leader>cf- Format buffer
<leader>gg- Open LazyGit<leader>gs- Stage hunk<leader>gr- Reset hunk<leader>gp- Preview hunk<leader>gb- Blame line
<leader>hs- Add current file to Harpoon<leader>hd- Toggle Harpoon quick menu<leader>hp- Navigate to previous Harpoon file<leader>hn- Navigate to next Harpoon file&- Navigate to Harpoon file 1é- Navigate to Harpoon file 2"- Navigate to Harpoon file 3'- Navigate to Harpoon file 4(- Navigate to Harpoon file 5-- Navigate to Harpoon file 6è- Navigate to Harpoon file 7_- Navigate to Harpoon file 8ç- Navigate to Harpoon file 9
<leader>tc- Compile LaTeX document<leader>tv- View PDF<leader>tt- Toggle table of contents<leader>te- Show compilation errors<leader>ts- Stop compilation<leader>tS- Stop all compilations<leader>ti- Show document info<leader>tI- Show detailed document info<leader>tl- Show compilation log<leader>tL- Clean auxiliary files<leader>tk- Show package documentation<leader>tK- Count words in document<leader>tx- Reload VimTeX
<C-h/j/k/l>- Navigate between Neovim splits and tmux panes<C-a>c- Create a new tmux window<C-a>%- Split pane vertically<C-a>"- Split pane horizontally<C-a>z- Zoom pane<C-a>[- Enter copy mode
LazyGit is a terminal UI for git commands. To use it:
- Press
<leader>ggto open LazyGit - Navigate through the UI using the keyboard:
?- Show help- Arrow keys to navigate
Enterto selectqto quit
This configuration includes seamless navigation between Neovim splits and tmux panes using the same keybindings:
Ctrl-h- Move to the left split/paneCtrl-j- Move to the bottom split/paneCtrl-k- Move to the top split/paneCtrl-l- Move to the right split/pane
Ctrl-a- Prefix keyPrefix + |- Split horizontallyPrefix + -- Split verticallyPrefix + h/j/k/l- Navigate between panesPrefix + H/J/K/L- Resize panesPrefix + r- Reload tmux configurationPrefix + I- Install tmux plugins
You can customize this configuration by editing the files in the lua/config and lua/plugins directories.
To add a new plugin, create a new file in the lua/plugins directory with the plugin configuration.
Example:
-- lua/plugins/newplugin.lua
return {
"username/newplugin",
config = function()
require("newplugin").setup({
-- options here
})
end,
}MIT