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:
nvim
Lazy.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/plugins
directory - 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>gg
to open LazyGit - Navigate through the UI using the keyboard:
?
- Show help- Arrow keys to navigate
Enter
to selectq
to 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