lvim-tech/lvim

website github github
preconfigured-configuration
stars 381
issues 0
subscribers 7
forks 30
CREATED

2021-04-17

UPDATED

23 days ago


  • 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

* [[https://github.com/neovim/neovim/wiki/Installing-Neovim][neovim >= 0.11.0]]
* [[https://github.com/neovim/pynvim][pynvim]]
* [[https://github.com/mhinz/neovim-remote][neovim-remote]]
* [[https://nodejs.org/en/][nodejs]]
* [[https://github.com/BurntSushi/ripgrep][ripgrep]]
* sed
* [[https://github.com/junegunn/fzf][fzf]]
* [[https://github.com/WayneD/rsync][rsync]]
* [[https://github.com/jesseduffield/lazygit][lazygit]]
* [[https://github.com/htacg/tidy-html5][tidy-html5]]
* [[https://git-scm.com/][git]]
* [[https://curl.se/][curl]] and [[https://www.gnu.org/software/wget/][wget]]
* unzip, tar, gzip

** INSTALL

#+begin_src bash
git clone https://github.com/lvim-tech/lvim.git ~/.config/nvim
#+end_src

** BASE COMMANDS

- Help for keybinds

#+begin_src lua

:LvimHelper

#+end_src

- 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

#+begin_src lua

:LvimTheme

#+end_src

- Keys helper - true (default), false

#+begin_src lua

:LvimKeysHelper

#+end_src

- Keys helper delay - 50, 100, 200 (default), 300, 400, 500, 600, 700, 800, 900, 1000 (ms)

#+begin_src lua

:LvimKeysHelperDelay

#+end_src

- Float height - 0.1, 0.2, 0.3, 0.4 (default), 0.5, 0.6, 0.7, 0.8, 0.9, 1.0

#+begin_src lua

:LvimFloatHeight

#+end_src

- AutoFormat (on save) - true (default), false

#+begin_src lua

:LvimAutoFormat

#+end_src

- VirtualDiagnostic - true, false (default)

#+begin_src lua

:LvimVirtualDiagnostic

#+end_src

- InlayHint - true (default), false

#+begin_src lua

:LvimInlayHint

#+end_src

- Charset, End of line, Indent style, Indent size, Insert final newline, Max line length, Tab width, Trim trailing whitespace

#+begin_src lua

:EditorConfigCreate

#+end_src

- LSP

#+begin_src lua

:LvimInstallLangDependencies
:Neoconf
:Neoconf local
:Neoconf global
:Neoconf show
:Neoconf lsp

#+end_src

** SNAPSHOTS

+ Snap folder: *~/.config/nvim/.snapshots/*

+ Default snapshot file: *default*

+ Show current snapshot:

#+begin_src lua

:SnapshotFileShow

#+end_src


+ Choice file to rollback:

#+begin_src lua

:SnapshotFileChoice

#+end_src

Then run:

#+begin_src lua

:Lazy sync

#+end_src

** USER CONFIGS

*** EDITOR

* Disable base config function

#+begin_src lua
-- lua/configs/user/init.lua
configs["base_vim"] = false -- disable function "base_vim" from "lua/configs/base/init.lua"
#+end_src


* Rewrite base config function

#+begin_src lua
-- lua/configs/user/init.lua
configs["base_vim"] = { -- rewrite function "base_vim" from "lua/configs/base/init.lua"
    -- your code
}
#+end_src

* Add user config function

#+begin_src lua
-- lua/configs/user/init.lua
configs["user_vim"] = { -- add user function
    -- your code
}
#+end_src

*** PLUGINS

+ Disable base plugin

#+begin_src lua
-- lua/modules/user/init.lua
modules["folke/noice.nvim"] = false -- disable plugin "folke/noice.nvim" from "lua/modules/user/init.lua"
#+end_src

+ Rewrite settings of base plugin

#+begin_src lua
-- lua/modules/user/init.lua
modules["folke/noice.nvim"] = { -- rewrite settings of plugin "folke/noice.nvim" from "lua/modules/user/init.lua"
    -- your code
}
#+end_src

+ Add new plugin

#+begin_src lua
-- lua/modules/user/init.lua
modules["name_of_your/plugin"] = { -- add new plugin
    -- your code
}
#+end_src

*** LSP (Languages)

+ Extend LSP support

  1. First step:

  * Disable filetypes

  #+begin_src lua
  -- lua/languages/user/ft.lua
    ["shell"] = {} -- disable shell support
  #+end_src

  * Rewrite filetypes

  #+begin_src lua
  -- lua/languages/user/ft.lua
    ["shell"] = { -- add support for shell
        "sh",
        "bash",
        "zsh"
    }
  #+end_src

  * Add filetypes

  #+begin_src lua
  -- 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"
    }
  #+end_src

  2. 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