/stinvim

Ready Neovim's configuration for fullstack developers.

Primary LanguageLuaMIT LicenseMIT

This is the distro neovim for fullstack development.

🚀 Performance for time startup: 24ms - 50ms(about 50 plugins)

Features

Plugin Description
lazy A plugin manager that loads plugins lazily to ensure fast startup times.
nvim-lspconfig Support default lsp for (lua, python, web development, java, bash, c-c++ )
mason Automatically installs LSP servers, formatters, linters, and debug adapters
conform Fast formatter
nvim-cmp A lightweight completion plugin
witch Main theme
url-open Great plugin to open the url under cursor
stcursorword Highlight all words similar to the word under the cursor
buffer-closer Automatic close unused buffers
nvim-tree A fast and lightweight file explorer
toggleterm Includes a terminal using toggleterm
gitsigns, git-conflict Integrates Git functionality with gitsigns and git-conflict plugins for a seamless Git experience.
comment A plugin for easily generating comments.
dap, dapui Offers debugging capabilities with dap and dapui plugins.
treesitter Provides syntax highlighting
autopairs Auto generate pairs
rainbow-delimiters Beautiful bracket highlighting
ccc A color picker using ccc
sttusline A very lightweight, super fast and lazyloading statusline plugin for neovim written in lua
telescope Provides a file finder using telescope, a fuzzy finder plugin for files, buffers, and more.

And many more plugins that you can see in plugins/init.lua

Preview

preview1

preview2

How to add more key map

  • We provide you two files for keymap.

    • One for plugin key map (~/.config/nvim/lua/core/plugmap.lua).(This file will be load on startup)

    • One for some custom default nvim map (~/.config/nvim/lua/core/nvimmap.lua). In this file if any keymap you want it run on startup please put your map function in map_on_startup function

  • We provide you a function to map

    ---@tparam table|string mode : Table mode used for applying the key map if only one mode you can use string
    ---@tparam string key : The key you wish to map.
    ---@tparam function|string map_to : The key or function to be executed by the keymap.
    ---@tparam table|number opts : Options to be applied in vim.keymap.set.
    --- - Default opts = 1.
    --- - opts = 1 for noremap and silent and nowait.
    --- - opts = 2 for not noremap and silent.
    --- - opts = 3 for noremap and not silent.
    --- - opts = 4 for not noremap and not silent.
    --- - opts = 5 for expr and noremap and silent.
    --- - opts = 6 for noremap and silent and wait.
    --- - opts = 7 for noremap and silent and nowait and expr.
    ---@tparam table extend_opts: Extension or overriding of opts if opts is a number.
    require("utils.mapper").map(mode, key, map_to, opts, extend_opts)

    --- Examples:
	require("utils.mapper").map({ "n", "v" }, "gx", "<esc>:URLOpenUnderCursor<cr>", { desc = "Open URL under cursor" })
	require("utils.mapper").map("n" }, "gx", "<esc>:URLOpenUnderCursor<cr>", 2, { desc = "Open URL under cursor" })

Install LSP, debugger

  • We use mason plugin to automatically install lsps, debuggers, linters

  • To ensure a package is automatically synced on startup, you can create a .masonrc.json file in the project's root directory or add packages to ensured_installed in ~/.config/nvim/lua/plugins/configs/mason.lua

  • If you want disable automatically synced mason packages on startup, you can change auto_sync = false in ~/.config/nvim/lua/plugins/configs/mason.lua

  • Additionally, you can manually sync the package by using the command :MasonSyncPackages in your neovim

  • Example .masonrc.json .masonrc.json

Requirements

  • xclip (for clipboard support)
  • fd (for telescope)
  • ripgrep (for telescope)
  • Nerdfonts (for icons) (I use Hack Nerd Font)
  • Neovim 0.5 or higher

Arch Linux:

sudo pacman -S xclip fd ripgrep
yay -S ttf-hack-nerd

Installation

Clone this repository into your Neovim configuration directory.

Linux and MacOS:

SSH method (recommended)

[ -d ~/.config/nvim ] && mv ~/.config/nvim ~/.config/nvim.bak ; git clone git@github.com:sontungexpt/stinvim.git ~/.config/nvim --depth 1
[ -d ~/.config/nvim ] && mv ~/.config/nvim ~/.config/nvim.bak ; git clone https://github.com/sontungexpt/stinvim.git ~/.config/nvim --depth 1

Windows (git bash)

[ -d %USERPROFILE%/Local/nvim ] && mv %USERPROFILE%\AppData\Local\nvim %USERPROFILE%\AppData\Local\nvim.bak ; git clone https://github.com/sontungexpt/stinvim.git %USERPROFILE%\AppData\Local\nvim --depth 1

You will also need to install the plugins. This configuration uses the lazy.nvim plugin manager to manage plugins. You can install the plugins by opening Neovim and running :Lazy sync

In this distro we enable two providers: nodejs and python so please install it or you can disable it in file ~/.config/nvim/lua/core/provider.lua

# for nodejs
npm install -g neovim

# for ruby
# gem install neovim

# for python
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install neovim
:Lazy sync

Inspiration

Configuration

This configuration is highly customizable and easy to configure.

Contributions

If you find any issues with this configuration or would like to contribute, please feel free to submit a pull request or open an issue.

License

This configuration is licensed under the MIT license - see the LICENSE file for details.