Skip to content

Latest commit

Β 

History

History
805 lines (644 loc) Β· 41.9 KB

README.md

File metadata and controls

805 lines (644 loc) Β· 41.9 KB

Bloated LunarVim

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 πŸ˜…

Screenshot 2024-06-04 at 18 26 59
Table of Contents (πŸ”Ž Click to expand/collapse)

Theme

Themes are automatically changed based on time of the day:

Theme Time of the day
rose-pine [1am, 9am)
tokyonight [9am, 5pm)
catppuccin [5pm, 9pm)
kanagawa [9pm, 11:59pm), [0am, 1am]

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

Customization (πŸ”Ž Click to expand/collapse)
  • I'm using neovim 0.11 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 cmp-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 or flash 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, change default_diagnostic_config.virtual_text inside builtin.lua
  • I'm using skim for latex stuff, change it to zathura if you are on linux

Install

Prerequisites (πŸ”Ž Click to expand/collapse)

Prerequisites

  brew install neovim --nightly
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
brew install node
bash <(curl -s "https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/install.sh")
mv ~/.config/lvim ~/.config/lvim_backup
git clone https://github.com/abzcoding/lvim.git ~/.config/lvim
lvim +LvimUpdate +LvimCacheReset +q
lvim # run :Lazy sync

Java

Java (πŸ”Ž Click to expand/collapse)

Please run the following to have a better debugging and testing support for java

mkdir -p ~/workspace
git clone --branch main --depth 1 https://github.com/microsoft/java-debug ~/.config/lvim/.java-debug
cd ~/.config/lvim/.java-debug/
mvn clean install
git clone --branch main --depth 1 [email protected]:microsoft/vscode-java-test.git ~/.config/lvim/.vscode-java-test
cd ~/.config/lvim/.vscode-java-test
npm install
npm run build-plugin

Recommended Fonts

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.

Upgrade

cd ~/.config/lvim
git pull
lvim # run :Lazy sync

Recommended Linters

You can use mason to install these:

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

Collaborative Editing

Collaborative Editing (πŸ”Ž Click to expand/collapse)

The default is to serve localhost only, on port 8080. For a more advanced (remote server) overview see Deploy a server

Server side

  • :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

Client side

  • 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

Screenshot

Screenshots (πŸ”Ž Click to expand/collapse) Screenshot 2024-06-04 at 18 30 21

BufferLine

Screenshot 2024-06-04 at 18 30 53

StatusLine

Screenshot 2024-06-04 at 18 32 55

Dashboard

Screenshot 2024-06-04 at 18 33 48 Screenshot 2024-06-04 at 18 33 56

lsp_signature

lsp_signature_2 lsp_signature

Tabnine

tabnine

Lang Server

completion Screen Shot 2021-10-18 at 5 43 22 PM

diagnostics using gl Screen_Shot_2021-07-31_at_7 54 52_PM

code_actions using ga Screen Shot 2021-10-18 at 6 25 58 PM

code_lens and inlay_hints when supported by lang server Screen Shot 2021-10-18 at 6 26 47 PM

references in qf Screen Shot 2021-10-18 at 6 31 03 PM

treesitter backed folding Screen Shot 2021-10-18 at 6 05 29 PM

peek using gp

Screen Shot 2021-10-18 at 6 33 06 PM

rename using <leader>lr

Screen Shot 2021-11-04 at 3 54 15 PM

Builtin Terminal

Screen Shot 2021-10-18 at 6 07 13 PM

Test

Screen Shot 2021-10-18 at 6 13 22 PM

ETC

k8s help

Screen Shot 2021-10-18 at 6 23 21 PM

lazy git integration

Screen Shot 2021-10-18 at 6 27 45 PM

zen mode

Screen Shot 2021-10-18 at 6 30 00 PM

Cheat.sh integration

use <leader>? Screen Shot 2021-10-18 at 6 02 31 PM

Screen Shot 2021-10-18 at 6 01 34 PM

Symbols Outline

Screen Shot 2021-10-18 at 6 03 57 PM

Plugins Included

Plugins (πŸ”Ž Click to expand/collapse)

Optional Plugins

Structure

Structure (πŸ”Ž Click to expand/collapse)

Custom Key-mappings

Note that,

  • Leader key set as Space
Key-mappings (πŸ”Ž Click to expand/collapse) Modes: 𝐍=normal 𝐕=visual 𝐒=select 𝐈=insert 𝐂=command

UI

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+I 𝐍 Inlay Hints require('vim.lsp._inlay_hint').refresh()
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

Motion

Key Mode Action Plugin or Mapping
f 𝐍 find next character HopChar1CurrentLineAC or leap_f or Flash.CharActions
F 𝐍 find previous character HopChar1CurrentLineBC or leap_F or Flash.CharActions
s 𝐍 find character HopChar2MW or leap_s or require("flash").jump()
S 𝐍 find word HopWordMW or leap_S or 2char jump
Alt+a 𝐈 select all ggVG
Alt+a 𝐍 increment number C-A
Alt+x 𝐍 decrement number C-X

LSP

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

Plugin: AsyncTasks

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

Plugin: Gitsigns

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

Plugin: LazyGit

Key Mode Action
Space+g+g 𝐍 Open lazy git UI

Plugin: Telescope

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

Plugin: Harpoon

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

Plugin: Neogen

Key Mode Action
Space+n+c 𝐍 Class documentation
Space+n+f 𝐍 Function documentation
Space+n+t 𝐍 Type documentation
Space+n+F 𝐍 File documentation

Plugin: Persistence

Key Mode Action
Space+q+d 𝐍 Delete Session
Space+q+l 𝐍 Load Session
Space+q+s 𝐍 Save Session

Plugin: Bufferline

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

Plugin: Trouble

Key Mode Action
Space+T+d 𝐍 Diagnostics
Space+T+f 𝐍 Definitions
Space+T+r 𝐍 References
Space+T+t 𝐍 Todo
Space+T+w 𝐍 Workspace diagnostics

Plugin: Ultest

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

Plugin: Neotest

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

Plugin: Spectre

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

Plugin: SSR

Key Mode Action
Space+r 𝐕 Structural replace confirm using <leader><cr>
Space+R+s 𝐍 Structural replace confirm using <leader><cr>

Plugin: Copilot

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>"

Plugin: Lsp_Lines

Key Mode Action
Space+v 𝐍 Toggle showing lsp_lines

Plugin: Overseer

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

Plugin: NeoTree

Key Mode Action
Space+e 𝐍 Toggle tree
> and < 𝐍 Next and prev source inside tree
Enter 𝐍 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

Plugin: Mind

Key Mode Action
Space+M+M 𝐍 Open Main Tree
Space+M+m 𝐍 Open Local Tree
Enter 𝐍 open data
Tab 𝐍 toggle node
Shift+Tab 𝐍 toggle parent
/ 𝐍 select path
$ 𝐍 change icons menu
c 𝐍 create new node
q 𝐍 quit

Troubleshooting

  1. Check your neovim version. Are you on the newest nightly version?
  2. make sure to run :Lazy sync
  3. Reset your Lunarvim cache using :LvimCacheReset