Behold, the mystical incantations of my Neovim configuration, carefully crafted to summon the spirits of efficiency and productivity from the depths of the digital abyss. With the precision of a surgeon and the finesse of a ninja, I've concocted a brew of plugins and keybindings that dance harmoniously to the rhythm of my keystrokes weaving spells of autocomplete and syntax highlighting to illuminate the darkest recesses of my codebase.
- 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
Open Neovim with this config:
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
'
Replace local plugins specs with the ones from the remote repository:
~/personal-vim-plugs/xyz
becomes rubiin/xyz
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
│ └── queries # Override filetype settings
├── autoload
├── biome.json # Configuration file for a specific feature or plugin
├── 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 # Coding related plugins
│ │ ├── disabled.lua # Disabled plugins
│ │ ├── editor # Editor related plugins
│ │ ├── extras # Extra plugins that are not loaded by default
│ │ ├── init.lua
│ │ ├── lsp # Language server protocol related plugins
│ │ └── ui # UI related plugins
│ └── utils # Utility scripts
│ └── telescope # Custom telescope extension
├── misc # Misc folders
│ ├── snippets
│ └── undo
├── README.md # Readme file for the project
├── setup.sh # Shell script for bootstrapping required tools
├── spell # Directory possibly containing spellcheck related files
└── stylua.toml # Configuration file for Stylua
- folke/zen-mode.nvim
- debugloop/telescope-undo.nvim
- Wansmer/treesj
- windwp/nvim-autopairs
- HiPhish/rainbow-delimiters.nvim
- okuuva/auto-save.nvim
- aznhe21/actions-preview.nvim
- neovim/nvim-lspconfig
- smjonas/inc-rename.nvim
- mfussenegger/nvim-lint
- marilari88/twoslash-queries.nvim
- folke/noice.nvim
- echasnovski/mini.animate
- rcarriga/nvim-notify
- stevearc/dressing.nvim
- kevinhwang91/nvim-ufo
- chrisgrieser/nvim-early-retirement
- ghillb/cybu.nvim
- astro
- eslint
- flow
- graphql
- html
- svelte
- taplo
- vtsls
-Note: These are the plugin list and most of them 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
But beware, dear traveler, for navigating the labyrinthine corridors of the Neovim config is not for the faint of heart. One wrong keystroke, and you could find yourself lost in a sea of syntax errors, tangled in the vines of conflicting plugins, or worse – staring into the abyss of an unresponsive editor.
Yet fear not, for even in the darkest depths of plugin hell, there is hope. With the wisdom of the Vim masters as your guide and the camaraderie of fellow developers as your shield, you shall emerge victorious. And when you do, you'll look back on your Neovim configuration not just as a set of preferences, but as a testament to your resilience, your creativity, and your ability to laugh in the face of even the most cryptic Vimscript errors.
Like the cofigs? Follow the repository on GitHub. If you find this config useful, you might also be interested in my other projects:
Huge shoutout to the Vim elders, whose ancient wisdom and cryptic commands paved the way for the adoption of Neovim. May your modal editing skills be forever sharp, and your init.lua files forever tidy.
- Teejay Devries for his videos
- Christian Chiarulli for his videos
- ThePrimeagen for his videos
- Alpha2phi for his Article
May these resources serve as beacons of light on your journey through the labyrinthine corridors of Neovim. Happy coding, and may your keystrokes be ever swift and your plugins ever reliable!