Do not use as is, use it as a source of inspiration.
I've customized my ZSH/Tmux/Wezterm too much, so it might not work properly π

Table of Contents
(π Click to expand/collapse)
Themes are automatically changed based on time of the day:
You can change this in plugins.lua and theme.lua
or just disable it and install your own theme
lvim.colorscheme = "catppuccin"
lvim.builtin.time_based_themes = false
lvim.plugins = {
{
"catppuccin/nvim",
as = "catppuccin",
config = function()
require("catppuccin").setup()
end,
}
}
Customization
(π Click to expand/collapse)
- I'm on this PR of LunarVim and i am using
neovim 0.9 head
- Do not use as is, too much bloated! Also do not use on a potato PC!!
- i have a auto command to disable syntax,etc when you open files larger than
1MB
- if you don't want to use
harpoon, disable it
lvim.builtin.harpoon = { active = false }
- if you want to try out GitHub copilot, change the following
lvim.builtin.sell_your_soul_to_devil = { active = true, prada = false }
- in case you want to use
cmp-copilot, set prada=true after copilot installation
- I use a custom
lualine disable it if you don't like it
lvim.builtin.fancy_statusline = { active = false }
- You can use the
diffview plugin instead of normal gitsigns diff
lvim.builtin.fancy_diff = { active = true }
- if you want to use debugging, change the following line to true, also install codelldb:
lvim.builtin.dap.active = true
- sometimes instead of saving you jump trough jumplist π’ just disable nvim-lastplace
lvim.builtin.lastplace = { active = false }
- sometimes
compe-tabnine doesn't play nice, you can disable it :)
lvim.builtin.tabnine = { active = false }
- if you don't need testing, just disable it (use
ultest or neotest)
lvim.builtin.test_runner = { active = false, runner = "ultest" }
- if you don't want cheat.sh integration, disable it
lvim.builtin.cheat = { active = false }
- if you don't want the SQL integration, disable it
lvim.builtin.sql_integration = { active = false }
- if you don't like smooth scrolling, disable it
lvim.builtin.smooth_scroll= ""
- if you want an obvious focused window, and you don't get seizures from it
lvim.builtin.nonumber_unfocus = true
- choose between hop and leap as your favorite motion provider
lvim.builtin.motion_provider = "hop"
- choose between filename->incline and treesitter->winbar or navic as your winbar provider
lvim.builtin.winbar_provider = "treesitter"
- if you don't need CSV support, disable it
lvim.builtin.csv_support = false
- if you want to use the cool make and run system, enable it
lvim.builtin.task_runner = "async_tasks"
- you can choose between
nvimtree and neo-tree as your file tree viewer
lvim.builtin.tree_provider = "neo-tree"
- you can use noice.nvim if you want
lvim.builtin.noice = { active = true }
- If you wanna see the issues, remove
lvim.lsp.diagnostics.virtual_text = false
- I'm using
skim for latex stuff, change it to zathura if you are on linux
Prerequisites (π Click to expand/collapse)
brew install neovim --nightly
- Rust
and telescope stuff:
curl --proto '=https' --tlsv1.2 -sSf "https://sh.rustup.rs" | sh
cargo install ripgrep fd-find
- NodeJS >= v16.13.0
most language servers need this
# install LunarVim
mv ~/.config/lvim ~/.config/lvim_backup
git clone https://github.com/abzcoding/lvim.git ~/.config/lvim
lvim +LvimUpdate +LvimCacheReset +q
lvim # run :PackerSync
Please run the following to have a better debugging and testing support for java
mkdir -p ~/workspace
git clone git@github.com:microsoft/java-debug.git ~/.config/lvim/.java-debug
cd ~/.config/lvim/.java-debug/
./mvnw clean install
git clone git@github.com:microsoft/vscode-java-test.git ~/.config/lvim/.vscode-java-test
cd ~/.config/lvim/.vscode-java-test
npm install
npm run build-plugin
On macOS with Homebrew, choose one of the Nerd Fonts,
for example, here are some popular fonts:
brew tap homebrew/cask-fonts
brew search nerd-font
brew install --cask font-fira-code-nerd-font
brew install --cask font-victor-mono-nerd-font
brew install --cask font-iosevka-nerd-font-mono
brew install --cask font-hack-nerd-font
Other Stuff (π Click to expand/collapse)
Language-Server Protocol (LSP)
To leverage LSP auto-completions and other functionalities, after you open a
file in Neovim, run :MasonInstall <server> to use
mason installation feature.
Use Tab to list available servers.
cd ~/.config/lvim
git pull
lvim # run :PackerSync
You can use mason to install these:
brew install luarocks
luarocks install luacheck # if you want to use luacheck
cargo install selene # if you want to use selene instead of luacheck
brew install hadolint # if you want to lint dockerfiles
pip install vim-vint # for vim linting
# install llvm and clang_format for clang stuff
npm install -g @fsouza/prettierd # if you want to use prettierd
pip install yapf flake8 black # for python stuff
# if you want to use the markdown thingy
brew install vale markdownlint-cli
cp -r ~/.config/lvim/.vale ~/.config/vale
# fix the address inside .vale.ini
cp ~/.config/lvim/vale_config.ini ~/.vale.ini
# if you want the latex stuff
# brew install --cask mactex-no-gui # for mac
# or install zathura and chktex on linux
In case you want a better tex support in mac, check
this out
if you want the custom gostructhelper, first get the pkg:
cd /tmp
git clone https://github.com/vanhtuan0409/gostructhelper.git
cd gostructhelper/cmds/gostructhelper
go build -o /usr/local/bin/gostructhelper && chmod 0755 /usr/local/bin/gostructhelper
The default is to serve localhost only, on port 8080. For a more advanced (remote server) overview see Deploy a server
:InstantStartServer [host] [port] : Start the server using
:InstantStartSingle [host] [port] : This only shares the current buffer.
:InstantStartSession [host] [port] :This shares all opened (and newly opened) buffers with the other clients
let g:instant_username="sth" : Set your preferred username.
:InstantJoinSingle [host] [port] : Use this command if another client already initiated a single share.
:InstantJoinSession [host] [port] : Use this command if another client already initiated a session share
Screenshots (π Click to expand/collapse)
completion

diagnostics using gl

code_actions using ga

code_lens and inlay_hints when supported by lang server

references in qf

treesitter backed folding

peek using gp
rename using <leader>lr
k8s help
lazy git integration
zen mode
Cheat.sh integration
use <leader>?

Symbols Outline
Plugins (π Click to expand/collapse)
Structure (π Click to expand/collapse)
Note that,
Key-mappings
(π Click to expand/collapse)
Modes: π=normal π=visual π=select π=insert π=command
| Key |
Mode |
Action |
Plugin or Mapping |
| Space+e |
π |
Open file tree |
NvimTree |
| Space+o |
π |
Open symbols |
Symbols-outline |
| Space+f |
π |
Open file finder |
Telescope |
| Space+h |
π |
Remove highlight |
nohlsearch< |
| Space+/ |
π |
Toggle comment |
Comment.nvim |
| Space+? |
π |
Open cheats |
cheat.sh |
| Space+' |
π |
Open marks |
which-key marks |
| Space+z |
π |
Zen mode |
zen-mode.nvim |
| Space+P |
π |
Projects |
project.nvim |
| Ctrl+</kbd> |
π π |
Open terminal |
toggleterm.nvim |
| Alt+0 |
π π |
Vertical terminal |
toggleterm.nvim |
| Ctrl+s |
π |
Show signature help |
vim.lsp.buf.signature_help() |
| Alt+s |
π |
Snippet selection |
Telescope luasnip extension |
| Space+C or Ctrl+P |
π |
Command Palette |
legendary.nvim |
| Key |
Mode |
Action |
Plugin or Mapping |
| f |
π |
find next character |
HopChar1CurrentLineAC or leap_f |
| F |
π |
find previous character |
HopChar1CurrentLineBC or leap_F |
| s |
π |
find character |
HopChar2MW or leap_s |
| S |
π |
find word |
HopWordMW or leap_S |
| Alt+a |
π |
select all |
ggVG |
| Alt+a |
π |
increment number |
C-A |
| Alt+x |
π |
decrement number |
C-X |
| Key |
Mode |
Action |
| Tab / Shift-Tab |
π |
Navigate completion-menu |
| Enter |
π |
Select completion or expand snippet |
| Upor Down |
π |
Movement in completion pop-up |
| ]+d |
π |
Next diagnostic |
| [+d |
π |
Previous diagnostic |
| Space+l+j or Space+l+k |
π |
Next/previous LSP diagnostic |
| Space+l+r |
π |
replace current word in project |
| Ctrl+e |
π |
Close pop-up |
| Tab / Shift-Tab |
π π |
Navigate snippet placeholders |
| Space+l |
π |
keybindings for lsp |
| g+a |
π |
code actions |
| g+A |
π |
codelens actions |
| g+d |
π |
goto definition |
| g+t |
π |
goto type definition |
| g+D |
π |
goto declaration |
| g+I |
π |
goto implementation |
| g+p |
π |
peek implementation |
| g+r |
π |
goto references |
| g+s |
π |
show signature help |
| Key |
Mode |
Action |
| Space+m+f |
π |
Build File |
| Space+m+p |
π |
Build Project |
| Space+m+e |
π |
Edit Tasks |
| Space+m+l |
π |
List Tasks |
| Space+r+f |
π |
Run File |
| Space+r+p |
π |
Run Project |
| Key |
Mode |
Action |
| Space+g+j or Space+g+k |
π |
Next/previous Git hunk |
| Space+g+p |
π |
Preview hunk |
| Space+g+l |
π |
Blame line |
| Space+g+s |
π π |
Stage hunk |
| Space+g+u |
π |
Undo stage hunk |
| Space+g+d |
π |
Diff to head |
| Space+g+h |
π |
Buffer git history |
| Space+g+R |
π π |
Reset hunk |
| Key |
Mode |
Action |
| Space+g+g |
π |
Open lazy git UI |
| Key |
Mode |
Action |
| Space+f |
π |
File search |
| Space+P |
π |
Project search |
| Space+s+s |
π |
Grep search |
| Space+s+f |
π |
Telescope find_files |
| Space+s+e |
π |
Telescope file_browser |
| Space+F+l |
π |
Reopen last search |
| Space+b+f |
π |
Buffers |
| Space+s+c |
π |
Colorschemes |
| Space+s+C |
π |
Command history |
| Space+s+h |
π |
Find help |
| Space+s+k |
π |
Keymap search |
| Space+s+M |
π |
Man Pages search |
| Space+s+r |
π |
Register search |
| Space+s+t |
π |
Grep string under cursor |
| Space+s+t |
π |
Grep raw |
| Space+F+b |
π |
Builtin search |
| Space+F+f |
π |
Current buffer search |
| Space+F+g |
π |
Git files search |
| Space+F+i |
π |
Installed plugins |
| Space+F+p |
π |
Project search |
| Space+F+i |
π |
Installed plugins |
| in Telescope window |
|
|
| CR |
π π |
Multi/Single Open |
| Ctrl+c |
π π |
Exit telescope |
| Ctrl+v |
π π |
Open in a vertical split |
| Ctrl+s |
π π |
Open in a split |
| Ctrl+t |
π π |
Open in a tab |
| Ctrl+b |
π |
Go back in Command Palette |
| Tab |
π π |
Toggle Selection + Next |
| Shift+Tab |
π π |
Toggle Selection + Prev |
| Key |
Mode |
Action |
| Space+Space |
π |
Show harpoon shortlist |
| Space+a |
π |
Add file to shortlist |
| Space+1 |
π |
Jump to first file on shortlist |
| Space+2 |
π |
Jump to second file on shortlist |
| Space+3 |
π |
Jump to third file on shortlist |
| Space+4 |
π |
Jump to forth file on shortlist |
| Key |
Mode |
Action |
| Space+n+c |
π |
Class documentation |
| Space+n+f |
π |
Function documentation |
| Space+n+t |
π |
Type documentation |
| Space+n+F |
π |
File documentation |
| Key |
Mode |
Action |
| Space+q+d |
π |
Quit without saving session |
| Space+q+l |
π |
Restore last session |
| Space+q+s |
π |
Restore last session from current dir |
| Key |
Mode |
Action |
| Shift+x |
π |
Close buffer |
| Space+b+f |
π |
Find buffer |
| Space+b+b |
π |
Toggle buffer groups |
| Space+b+p |
π |
Toggle pin |
| Space+b+s |
π |
Pick buffer |
| Space+b+1 |
π |
Goto buffer 1 |
| Space+b+h |
π |
Close all to left |
| Space+b+l |
π |
Close all to right |
| Space+b+D |
π |
Sort by directory |
| Space+b+L |
π |
Sort by language |
| Key |
Mode |
Action |
| Space+T+d |
π |
Diagnostics |
| Space+T+f |
π |
Definitions |
| Space+T+r |
π |
References |
| Space+T+t |
π |
Todo |
| Space+T+w |
π |
Workspace diagnostics |
| Key |
Mode |
Action |
| Space+t+f |
π |
Run all tests in a file |
| Space+t+n |
π |
Only run nearest test |
| Space+t+s |
π |
Open test summary |
| Key |
Mode |
Action |
| Space+t+a |
π |
Run all tests |
| Space+t+f |
π |
Run tests in a file |
| Space+t+r |
π |
Only run nearest test |
| Space+t+s |
π |
Open test summary |
| Space+t+o |
π |
Open test output |
| Space+t+w |
π |
Watch test |
| Space+t+x |
π |
Stop test |
| Space+t+n |
π |
Jump to next failed test |
| Space+t+p |
π |
Jump to previous failed test |
| Space+t+c |
π |
Cancel test |
| Key |
Mode |
Action |
| Space+R+p |
π |
Replace word in project |
| Space+R+w |
π |
Replace visually selected word |
| Space+R+f |
π |
Replace word in current buffer |
| Key |
Mode |
Action |
| Space+r |
π |
Structural replace confirm using <leader><cr> |
| Space+R+s |
π |
Structural replace confirm using <leader><cr> |
| Key |
Mode |
Action |
| Ctrl+h |
π |
copilot#Accept("<CR>") |
| Ctrl+e |
π |
Close cmp menu |
| Ctrl+] |
π |
<Plug>(copilot-dismiss) |
| Alt+] |
π |
<Plug>(copilot-next) |
| Alt+[ |
π |
<Plug>(copilot-previous) |
| Alt+</kbd> |
π |
"<Cmd>vertical Copilot panel<CR>" |
| Key |
Mode |
Action |
| Space+v |
π |
Toggle showing lsp_lines |
| Key |
Mode |
Action |
| Space+r+f |
π |
Run |
| Space+r+p |
π |
Run with cmd |
| Space+r+t |
π |
Toggle output |
| Space+m+n |
π |
New Task |
| Space+m+l |
π |
Load Task Bundle |
| Space+m+s |
π |
Save Task Bundle |
| Space+m+q |
π |
Quick Action |
| Space+m+f |
π |
Task Action |
| Key |
Mode |
Action |
| Space+e |
π |
Toggle tree |
| > and < |
π |
Next and prev source inside tree |
|
π |
Open |
| s |
π |
Open in vertical split |
| S |
π |
Open in horizontal spit |
| H |
π |
Toggle hidden files |
| a |
π |
Add files/dirs |
| A |
π |
Add new dir |
| r |
π |
Rename |
| h |
π |
Go Updir |
| l |
π |
Open |
| P |
π |
Toggle preview |
| / |
π |
Fuzzy finder |
- Check your neovim version. Are you on the newest nightly version?
- Reset your packer cache, and update lvim.