LVIM IDE is a modular Neovim configuration written in LUA with full customization
- LSP support for 60+ languages
- Debug support for c, cpp, cs, dart, elixir, go, haskell, java, javascript/typescript, lua, php, python, ruby, rust, scala
- Linters with efm (“golangci-lint”, “rubocop”, “flake8”, “cpplint”, “yamllint”, “vint”)
- Formatters with efm (“stylua”, “yamlfmt”, “shfmt”, “cbfmt”, “prettierd”)
- Automatically install dependencies (lsp servers, linters, formatters, debbugers) by filetype
Current version - 5.0.00 (2024-05-23)
123 plugins
https://www.youtube.com/watch?v=KuEeQksIrI0
- Neovim 0.11.0+ (for NEOVIM < 0.11 use branch NEOVIM-0.10)
- Add or remove settings, rewrite all settings
- Add or remove plugins, rewrite all plugins
- Dynamic LSP activation
- Dynamic debugging activation - DAP
- Autoinstall the LSP servers, DAP servers, linters, and formatters
- Custom settings for projects
Now LvimIDE support Nerd fonts v3
All icons are predefined - `configs/base/ui/icons.lua`
For keybindings - press `F11` or `<C-c>h`
- ”;;” - All hydra keys
- “;l” - LVIM IDE `;a` - Common
- “;n” - Navigation
- “;r” - Replace
- “;h” - Hop
- “;e” - Explorer
- “;c” - Comment, annotation, fold
- “;u” - Linguistics
- “;t” - Telescope
- “;z” - FZF
- “;g” - GIT
- “;q” - Quickfix
- “;o” - Location
- “;d” - Diagnostics
- “;s” - Glance
- “;p” - DAP
- ”;’” - Neotest
- “;m” - Terminal
- “;w” - Dependencies
- package.json (npm / yarn)
- Cargo.toml (rust)
- pubspec.yaml (dart)
- neovim >= 0.11.0
- pynvim
- neovim-remote
- nodejs
- ripgrep
- sed
- fzf
- rsync
- lazygit
- tidy-html5
- git
- curl and wget
- unzip, tar, gzip
git clone https://github.com/lvim-tech/lvim.git ~/.config/nvim
- Help for keybinds
:LvimHelper
- Theme - Lvim Dark (default), Lvim Dark Soft, Lvim Light, Lvim Everforest Dark, Lvim Everforest Dark Soft, Lvim Gruvbox Dark, Lvim Gruvbox Dark Soft, Lvim Catppuccin Dark, Lvim Catppuccin Dark Soft, Lvim Solarized Dark
:LvimTheme
- Keys helper - true (default), false
:LvimKeysHelper
- Keys helper delay - 50, 100, 200 (default), 300, 400, 500, 600, 700, 800, 900, 1000 (ms)
:LvimKeysHelperDelay
- Float height - 0.1, 0.2, 0.3, 0.4 (default), 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
:LvimFloatHeight
- AutoFormat (on save) - true (default), false
:LvimAutoFormat
- VirtualDiagnostic - true, false (default)
:LvimVirtualDiagnostic
- InlayHint - true (default), false
:LvimInlayHint
- Charset, End of line, Indent style, Indent size, Insert final newline, Max line length, Tab width, Trim trailing whitespace
:EditorConfigCreate
- LSP
:LvimInstallLangDependencies
:Neoconf
:Neoconf local
:Neoconf global
:Neoconf show
:Neoconf lsp
- Snap folder: ~/.config/nvim/.snapshots/
- Default snapshot file: default
- Show current snapshot:
:SnapshotFileShow
- Choice file to rollback:
:SnapshotFileChoice
Then run:
:Lazy sync
- Disable base config function
-- lua/configs/user/init.lua
configs["base_vim"] = false -- disable function "base_vim" from "lua/configs/base/init.lua"
- Rewrite base config function
-- lua/configs/user/init.lua
configs["base_vim"] = { -- rewrite function "base_vim" from "lua/configs/base/init.lua"
-- your code
}
- Add user config function
-- lua/configs/user/init.lua
configs["user_vim"] = { -- add user function
-- your code
}
- Disable base plugin
-- lua/modules/user/init.lua
modules["folke/noice.nvim"] = false -- disable plugin "folke/noice.nvim" from "lua/modules/user/init.lua"
- Rewrite settings of base plugin
-- lua/modules/user/init.lua
modules["folke/noice.nvim"] = { -- rewrite settings of plugin "folke/noice.nvim" from "lua/modules/user/init.lua"
-- your code
}
- Add new plugin
-- lua/modules/user/init.lua
modules["name_of_your/plugin"] = { -- add new plugin
-- your code
}
- Extend LSP support
- First step:
- Disable filetypes
-- lua/languages/user/ft.lua ["shell"] = {} -- disable shell support
- Rewrite filetypes
-- lua/languages/user/ft.lua ["shell"] = { -- add support for shell "sh", "bash", "zsh" }
- Add filetypes
-- lua/languages/user/ft.lua ["shell"] = { -- add support for shell (if shell not defined in "lua/languages/base/ft.lua") "sh", "bash", "zsh", "csh", "ksh" }
- Second step:
- Base settings - in folder “lua/languages/base/languages” (file name == language
- “shell” -> “shell.lua”)
- Rewrite settings - put file with same name in folder “lua/languages/user/languages”
- Add settings for new language - put file with same name in folder “lua/languages/user/languages”
- bib
- c
- clojure
- cmake
- cpp
- cs
- css
- d
- dart
- edn
- eelixir
- elixir
- elm
- erlang
- fortran
- go
- gomod
- graphql
- groovy
- haskell
- handlebars
- html
- java
- javascript
- javascript.jsx
- javascriptreact
- json
- julia
- kotlin
- less
- lua
- markdown
- mysql
- objc
- objcpp
- ocaml
- perl
- php
- postcss
- python
- r
- rmd
- ruby
- rust
- sass
- scss
- scala
- sh
- sql
- sugarss
- svg
- tex
- toml
- typescript
- typescript.tsx
- typescriptreact
- vb
- vim
- vue
- xml
- xsd
- xsl
- xslt
- yaml
- zig
- zir
- c
- cpp
- cs
- dart
- elixir
- go
- haskell
- java
- javascript/typescript
- lua
- php
- python
- ruby
- rust
- scala