/lvim

LVIM IDE is a modular Neovim configuration written in LUA with full customization. LSP support for 60+ languages. Debug support for c, cpp, dart, elixir, go, haskell, java, javascript/typescript, lua, php, python, ruby, rust.

Primary LanguageLuaBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

LVIM IDE

./LVIM/media/lvim-ide-logo.png

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

SCREENSHOTS

./LVIM/media/lvim-ide-screenshot_01.png

VIDEO

https://www.youtube.com/watch?v=KuEeQksIrI0

INTRODUCTION

  • 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

Icons

Now LvimIDE support Nerd fonts v3

All icons are predefined - `configs/base/ui/icons.lua`

Keybindings

For keybindings - press `F11` or `<C-c>h`

Hydra

  • ”;;” - 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)

REQUIREMENTS

INSTALL

git clone https://github.com/lvim-tech/lvim.git ~/.config/nvim

BASE COMMANDS

  • 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

SNAPSHOTS

  • Snap folder: ~/.config/nvim/.snapshots/
  • Default snapshot file: default
  • Show current snapshot:
:SnapshotFileShow
  • Choice file to rollback:
:SnapshotFileChoice

Then run:

:Lazy sync

USER CONFIGS

EDITOR

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

PLUGINS

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

LSP (Languages)

  • Extend LSP support
    1. 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"
      }
        
    1. 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”

LSP SUPPORT

  • 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

DEBUG SUPPORT

  • c
  • cpp
  • cs
  • dart
  • elixir
  • go
  • haskell
  • java
  • javascript/typescript
  • lua
  • php
  • python
  • ruby
  • rust
  • scala