Based on LazyVim as a starter, though most stuffs are overridden to keep less dependency on LazyVim as possible. The one based on lunarvim can be found at my dotfiles repo but I wanted more barebones and minimal as a result of which this repo was born which was sooner or later bound to happen
- Neovim >= 0.9.4 (needs to be built with LuaJIT)
- Git >= 2.19.0 (for partial clones support)
- a Nerd Font(v3.0 or greater) as your terminal font.
Make sure the nerd font you set doesn't end with Mono to prevent small icons. Example :
JetbrainsMono Nerd Font
and notJetbrainsMono Nerd Font Mono - lazygit (optional) for git integration
- a C compiler for
nvim-treesitter
. See here - for telescope.nvim (optional)
- a terminal that support true color and undercurl:
You can also run the setup.sh
if you are lazy and it will install all the requirements for you considering
you are on a unix based system
Install requires Neovim 0.9+. Always review the code before installing a configuration.
Clone the repository and install the plugins:
git clone git@github.com:rubiin/init.lua ~/.config/rubiin/init.lua
NVIM_APPNAME=rubiin/init.lua/ nvim --headless +"Lazy! sync" +qa```
Replace local plugins specs with the ones from the remote repository:
```~/personal-vim-plugs/xyz``` becomes ```rubiin/xyz```
Open Neovim with this config:
```sh
NVIM_APPNAME=rubiin/init.lua/ nvim
docker run -w /root -it --rm alpine:latest sh -uelic '
apk add git nodejs neovim ripgrep build-base wget --update
git clone https://github.com/rubiin/init.lua ~/.config/nvim
nvim
'
- NOTE for Windows users:
- don't use Windows
- try WSL2 on Windows and pretend you're on Linux (it's better)
βββ after
β βββ ftplugin # Override filetype settings
βββ biome.json # Configuration file for a specific feature or plugin
βββ doc
β βββ keymaps.md # Documentation file for keymaps
βββ init.lua # Initialization file for Vim or Neovim
βββ lazy-lock.json # Configuration file for a specific feature or plugin
βββ lazyvim.json # Configuration file for a specific feature or plugin
βββ LICENSE # File containing licensing information
βββ lua
β βββ config # Core configuration scripts
β βββ custom # Custom Lua scripts
β βββ plugins # Configurations for plugins
β β βββ coding
β β βββ disabled.lua
β β βββ editor
β β βββ extras
β β βββ init.lua
β β βββ lang
β β βββ lsp
β β βββ ui
β βββ utils # Utility scripts
βββ misc # Misc folders
β βββ snippets
β βββ undo
βββ README.md # Readme file for the project
βββ selene.toml # Possible configuration file for a tool or plugin
βββ setup.sh # Shell script for bootstrapping required tools
βββ spell # Directory possibly containing spellcheck related files
βββ stylua.toml # Configuration file for Stylua
- Plugin management via Lazy.nvim.
- Code, snippet, word auto-completion via nvim-cmp.
- Language server protocol (LSP) support via nvim-lspconfig.
- Better escaping from insert mode via better-escape.
- Better code folding with nvim-ufo.
- Ultra-fast project-wide fuzzy searching via nvim-telescope/telescope.nvim
- Faster code commenting via comment.
- Faster matching pair insertion and jump via rainbow-delimiters.
- Fast buffer jump via flash.nvim.
- Powerful snippet insertion via Luasnip.
- Better quickfix list with trouble.
- Beautiful statusline via lualine.nvim.
- File tree explorer via neo-tree.lua.
- User-defined mapping hint via which-key.nvim.
- Code highlighting via nvim-treesitter.
- Beautiful colorscheme via catppuccin/nvim and other colorschemes.
- LaTeX editing and previewing via vimtex
- Animated GUI style notification via nvim-notify.
- Code formatting via conform.
- Asynchronous code execution via asyncrun.vim.
- Undo management via debugloop/telescope-undo.nvim
- Markdown writing and previewing via vim-markdown and glow.nvim.
There are more plugins on extras folder that are not loaded by default. You can enable them by adding the require line on lua/plugins/init.lua
.
Some are disabled by default because they are not used by me but I keep them there for reference.
You can customize the banner with the globals on lua/rubiin/globals.lua
:
g.vscode_snippets_path = fn.stdpath("config") .. "/misc/snippets" -- Path to vscode snippets
g.github_username = "rubiin" -- Github username
g.random_banner = true -- Random banner
g.fortune = true -- Fortune in start screen
g.border_style = "single" ---@type "single"|"double"|"rounded"|"solid"|"none"
If you want to start neovim with no plugins whatsoever you can use the --clean
flag. For example, if you want
to use neovim as your git editor you can add this to your .gitconfig
:
core.editor = nvim --clean
If anything is not working as expected, please open an issue.