Skip to content

rubiin/init.lua

Repository files navigation

💤 My neovim config

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.

init.lua/(Always WIP)

⚡ Requirements

  • 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 not JetbrainsMono 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 Instructions

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 Instructions

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
  '

Post installation

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)

Directory structure

├── 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

UI

Start screen with dashboard-nvim

dashboard

Editor

editor

Plugins

bars-and-lines

code-runner

color

colorscheme

comment

completion

cursorline

debugging

editing-support

file-explorer

formatting

fuzzy-finder

game

git

icon

indent

keybinding

lsp

lsp-installer

markdown-and-latex

marks

note-taking

nvim-dev

plugin-manager

preconfigured

programming-languages-support

project

quickfix

scrolling

search

session

snippet

startup

statusline

syntax

tabline

utility

workflow

Language Servers

  • 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.

Personalization

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.

Self-Promotion

Like the cofigs? Follow the repository on GitHub. If you find this config useful, you might also be interested in my other projects:

Credits and Further reading/learning

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.

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!