Skip to content

sontungexpt/stinvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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.

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.

About

Ready Neovim's configuration for fullstack developers.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages