Home

Awesome

This is the distro neovim for fullstack development.

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

Features

PluginDescription
lazyA plugin manager that loads plugins lazily to ensure fast startup times.
nvim-lspconfigSupport default lsp for (lua, python, web development, java, bash, c-c++ )
masonAutomatically installs LSP servers, formatters, linters, and debug adapters
conformFast formatter
nvim-cmpA lightweight completion plugin
witchMain theme
url-openGreat plugin to open the url under cursor
stcursorwordHighlight all words similar to the word under the cursor
buffer-closerAutomatic close unused buffers
nvim-treeA fast and lightweight file explorer
toggletermIncludes a terminal using toggleterm
gitsigns, git-conflictIntegrates Git functionality with gitsigns and git-conflict plugins for a seamless Git experience.
commentA plugin for easily generating comments.
dap, dapuiOffers debugging capabilities with dap and dapui plugins.
treesitterProvides syntax highlighting
autopairsAuto generate pairs
rainbow-delimitersBeautiful bracket highlighting
cccA color picker using ccc
sttuslineA very lightweight, super fast and lazyloading statusline plugin for neovim written in lua
telescopeProvides 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

preview1

preview2

How to add more key 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

Requirements

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.

Folder Structure

├── ftplugin
│   └── java.lua
├── lua
│   ├── core
│   │   ├── autocmd.lua
│   │   ├── autofiletype.lua
│   │   ├── command.lua
│   │   ├── nvimmap.lua
│   │   ├── option.lua
│   │   ├── plugmap.lua
│   │   └── provider.lua
│   ├── plugins
│   │   ├── configs
│   │   │   ├── buffer-closer.lua
│   │   │   ├── bufferline.lua
│   │   │   ├── cmp
│   │   │   │   ├── init.lua
│   │   │   │   └── LuaSnip.lua
│   │   │   ├── comment
│   │   │   │   ├── Comment.lua
│   │   │   │   └── todo-comments.lua
│   │   │   ├── copilot.lua
│   │   │   ├── dap
│   │   │   │   ├── dapui.lua
│   │   │   │   ├── dap-virtual-text.lua
│   │   │   │   ├── init.lua
│   │   │   │   ├── paths.lua
│   │   │   │   └── utils.lua
│   │   │   ├── git
│   │   │   │   ├── git-conflict.lua
│   │   │   │   └── gitsigns.lua
│   │   │   ├── highlight-colors.lua
│   │   │   ├── indent-blankline.lua
│   │   │   ├── lazy-nvim.lua
│   │   │   ├── lsp
│   │   │   │   ├── conform.lua
│   │   │   │   ├── general-confs.lua
│   │   │   │   ├── lspconfig.lua
│   │   │   │   └── lspsaga.lua
│   │   │   ├── lualine
│   │   │   │   ├── components
│   │   │   │   │   ├── copilot.lua
│   │   │   │   │   ├── diagnostics.lua
│   │   │   │   │   ├── encoding.lua
│   │   │   │   │   ├── file.lua
│   │   │   │   │   ├── git.lua
│   │   │   │   │   ├── indent.lua
│   │   │   │   │   ├── location.lua
│   │   │   │   │   ├── lsp_servers.lua
│   │   │   │   │   ├── mode.lua
│   │   │   │   │   └── time.lua
│   │   │   │   └── init.lua
│   │   │   ├── mason.lua
│   │   │   ├── nvim-autopairs.lua
│   │   │   ├── nvim-tree.lua
│   │   │   ├── nvim-treesitter.lua
│   │   │   ├── nvim-ufo.lua
│   │   │   ├── stcursorword.lua
│   │   │   ├── sttusline
│   │   │   │   └── init.lua
│   │   │   ├── telescope
│   │   │   │   └── init.lua
│   │   │   ├── toggleterm.lua
│   │   │   ├── tokyonight.lua
│   │   │   ├── url-open.lua
│   │   │   ├── whichkey.lua
│   │   │   └── wilder.lua
│   │   ├── extensions
│   │   │   ├── copilot.lua
│   │   │   ├── git-conflict.lua
│   │   │   ├── lualine.lua
│   │   │   └── mason.lua
│   │   └── init.lua
│   ├── ui
│   │   ├── border.lua
│   │   ├── colors.lua
│   │   ├── icons
│   │   │   ├── devicon.lua
│   │   │   └── lspkind.lua
│   │   ├── init.lua
│   │   └── lualine.lua
│   └── utils
│   ├── bootstrap.lua
│   ├── init.lua
│   ├── mapper.lua
│   ├── notify.lua
│   ├── plug-extension.lua
│   └── reloader.lua
├── templates
│   └── plug_autocmd.txt
├── .masonrc.json
├── lazy-lock.json
├── LICENSE
└── init.lua

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.