Awesome
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
<!-- | [bufferline](https://github.com/akinsho/bufferline.nvim) | Manages buffers with bufferline, a simple and configurable interface for buffer management | -->Preview
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
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.