{"id":24408669,"url":"https://github.com/therustifyer/nvim-config","last_synced_at":"2025-08-20T21:06:57.235Z","repository":{"id":217384797,"uuid":"743566585","full_name":"TheRustifyer/nvim-config","owner":"TheRustifyer","description":"My personal Neovim set up to make it public available along to make me able to quickly retrieve it from any of the multiple workstations I typically use","archived":false,"fork":false,"pushed_at":"2025-01-18T09:37:37.000Z","size":866,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-13T09:28:35.035Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheRustifyer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-15T14:07:12.000Z","updated_at":"2025-01-18T09:37:39.000Z","dependencies_parsed_at":"2024-01-20T10:44:54.739Z","dependency_job_id":"ea282d4d-f694-4cb0-a775-5516f7ea132d","html_url":"https://github.com/TheRustifyer/nvim-config","commit_stats":null,"previous_names":["pyzyryab/nvim-config","therustifyer/nvim-config"],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/TheRustifyer/nvim-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRustifyer%2Fnvim-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRustifyer%2Fnvim-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRustifyer%2Fnvim-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRustifyer%2Fnvim-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheRustifyer","download_url":"https://codeload.github.com/TheRustifyer/nvim-config/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheRustifyer%2Fnvim-config/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261984642,"owners_count":23240302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-20T05:52:30.772Z","updated_at":"2025-06-26T02:03:32.586Z","avatar_url":"https://github.com/TheRustifyer.png","language":"Lua","readme":"# My personal `Neovim` configuration and set up\n\nHello everyone!\n\nThis repo is made just to track the progress of the **from O to IDE** creating and configuring from scratch\nmy own `neovim` set up.\n\nThis allows me to keep tracked the changes I introduce over the time, see how my personal configuration evolves over the time and share it with anyone instead while I am able to make some sort of tutorial while I am writing it.\n\nAlso, this allows me to have a reference point whenever I got into a new computer or set up, so I can quickly just `git clone` this repository and start to work immediately.\n\n\u003e **Note:** Highlighted blue hyperlinks will lead you to the plugin's or tool author documentation or repository\n\n## Config and Set Up across different OS\n\nI mostly do my coding personal job on `Linux` and `Windows` (like 70% - 30%) and my professional paid job the other way around, `Windows` and `Linux` (like 85% - 15%), and I use `Linux` mostly though `WSL`.\n\nSo you won't find any interesting here about `Mac`\n\nFor `Unix` users, vim already comes by default on most of the modern distros. And `nvim` is an easy to get one.\n\nBut `Windows` is a different kind of thing. You'll need to do some job to get your `nvim` working fine or it,\nso I'll let you [here](https://medium.com/nerd-for-tech/neovim-but-its-in-windows-f39f181afaf9) a nice guide of how to get and install it on `Windows`.\n\n## Pre-requisites\n\n### Windows specific ones\n\nThere's plugins on the set up that requires special tools to get their installation or job done.\n\nPersonally, for me, the easiest way of compatibilizing tools and dependencies workflows between\nthe `Unix` based tools and Windows, is to use [`Msys2`](https://packages.msys2.org). I really like\nthe `llvm` powered development set ups, letting `clang` make the build jobs that are required\nto be done from scratch. And with `msys2` I just need to download it, add one of the shell environments\nto the *Windows PATH*, and I am ready to work with almost everything I need.\n\nThis includes tools from a `C++` modern compiler, to static analyzers, unwind libraries, build systems\nand a lot of different development tools.\n\nAlso, as I said previously, this makes my development tools much more uniform across different *OS*,\nwhich makes me more productive at the end of the day.\n\n\u003e There's other ways of installing these tools, but I'll just document my favourite one\n\n- Open the `clang64` *Msys2* shell, and directly copy paste the following line\n\n```bash\npacman -S \\\n    mingw-w64-x86_64-{clang,cmake,make,ninja,llvm,llvm-libs,clang-analyzer,lld,libc++,libunwind,clang-tools-extra,compiler-rt,gcc-compat,gcc,diffutils}\n```\n\n- Add the `clang64` environment to the Windows **PATH**. Take the path where you\ninstalled `Msys2`, add the binary directory of the `clang64` environment to it,\nand add it to your path.\n\nMine, for example, is: `C:\\msys64\\clang64\\bin`\n\nAnd you're ready to go!\n\n## Optional ones\n\n### rip-grep\n\nIf you'd like to have `live grep`, you'll need to have [`ripgrep`](https://github.com/BurntSushi/ripgrep). The easiest way to install it is via cargo, just by:\n\n```bash\ncargo install ripgrep\n```\n\nIf for some strange reason you don't have `The Rust programming language` in you computer, fix what's wrong with you and install it.\nThen, go read the book, start to code in `Rust`. Then, gain knowledge about its ecosystem, and figure out what you've being missing\nall this time.\n\nAnyway, you can go to the `ripgrep` link above and install it via any of the other ways listed in their documentation.\n\n### Clipboard tool\n\nIn order to allow integration between the system clipboard and some\nvim registers, we need a clipboard provider.\n\nI choose ` win32yank` for such purpose.\n\nOn `WSL(2)`:\n\n```bash \n    -curl -sLo/tmp/win32yank.zip https://github.com/equalsraf/win32yank/releases/download/v0.1.1/win32yank-x64.zip\n    unzip -p /tmp/win32yank.zip win32yank.exe \u003e /tmp/win32yank.exe\n    chmod +x /tmp/win32yank.exe\n    sudo mv /tmp/win32yank.exe /usr/local/bin/\n```\n\nOn `msys2` (purple terminal):\n\n```bash\n    pacman -S unzip\n\n    -curl -sLo/tmp/win32yank.zip https://github.com/equalsraf/win32yank/releases/download/v0.1.1/win32yank-x64.zip\n    unzip -p /tmp/win32yank.zip win32yank.exe \u003e /tmp/win32yank.exe\n    chmod +x /tmp/win32yank.exe\n    sudo mv /tmp/win32yank.exe /usr/bin/ (or manually create the /usr/local/bin if doesn't exists)\n```\n\n## Package manager\n\nWhen I first started with `Neovim`, I liked to use `packer` as my package manage. But it went unmaintained, and several candidates raised up as alternatives.\n\nFinally, I decided to go with [lazy.vim](https://github.com/folke/lazy.nvim), since the set of features brings a lot of power to my daily development workflow and also comes\nwith a lot of predefined niceties that makes it wonderful.\n\n## The **`\u003cleader\u003e`** key and custom Remaps\n\nI like to have the `\u003cleader\u003e` key mapped to the `spacebar` key.\nThe space bar is extremely fast and comfortable, since I am able to reach it with both hands quickly and without having to make any estrange movements with any of my fingers. `\u003clocalleader\u003e` is the `\\` key.\n\nAll the keymaps and custom remaps configured for this setup are in the [keymaps file](./lua/config/keymaps.lua)\nor directly set up in the configuration files or each individual plugin whenever it makes sense, but here's a quick look at the most important ones.\n\n- `Telescope`\n  - **`\u003cleader\u003eff`** ⇒ Lists files in your current working directory. `.git` directory is intentionally disabled from the fuzzy search\n  - **`\u003cleader\u003efg`** ⇒ Fuzzy search through the output of git ls-files command, respects `.gitignore`\n  - **`\u003cleader\u003elg`** ⇒ Search for a string in your current working directory and get results live as you type, respects `.gitignore`\n  - **`\u003cleader\u003efb`** ⇒ Lists open buffers in current *Neovim* instance\n  - **`\u003cleader\u003efc`** ⇒ Lists available plugin/user commands and runs them on `\u003ccr\u003e`\n  - **`\u003cleader\u003efo`** ⇒ Lists previously open files\n  - **`\u003cleader\u003efh`** ⇒ Open *help tags*. This gives you quick documentation about editor elements\n  - **`\u003cleader\u003ecs`** ⇒ Preview of locally installed colorschemes\n\n- `Neotree`\n  - **`\u003cleader\u003ent`** ⇒ Starts `Neotree`\n  - **`\u003cleader\u003ee`** ⇒ Toggle ON/OFF `Neotree`\n\n## Plugins\n\nNot all the installed plugins to make up this set up are listed here, but there's the most noticeable and kind of important ones\n\n### [alpha](https://github.com/goolord/alpha-nvim)\n\n`alpha` is a fast and fully programmable greeter for **Neovim**\n\nI am using the [dashboard-nvim theme](https://github.com/goolord/alpha-nvim#dashboard-nvim-theme) and a set of custom randomized\n**ASCII art** logos shown above the dashboard options. Find them [here](./ascii_art/).\n\n### [which-key](https://github.com/folke/which-key.nvim)\n\n`which-key` is a **Neovim** plugin that displays a popup with possible key bindings for the command that you have started typing.\n\nSo if you aren’t quite sure about a given mapping, you can start by typing the `\u003cleader\u003e` key and then see the popup with suggestions for new keys you can type.\n\n![which key example](./assets/which-key-ex.png)\n\n## [bufferline](https://github.com/akinsho/bufferline.nvim)\n\nA snazzy buffer line (with tabpage integration) for `Neovim``\n\n## Telescope\n\n`Telescope` is a **fuzzy-finder** to quickly navigate over lists. This mean, that almost anything that can be stored on a list can be found with telescope, not only your project files!\n\n- `Live grep` - For having the ability of finding content in files directly, we'll need `ripgrep`. This allows us to find and filter text on the pickable files by `telescope`  \n\n### Telescope keymaps picker\n\nFor a more detailed view of the available keymaps and remaps, you can use the `:Telescope keymaps` picker. This acts as similarly as `which-key`\n\n![Telescope keymaps finder example](./assets/telescope-keymaps.png)\n\n## [Neo-tree](https://github.com/nvim-neo-tree/neo-tree.nvim)\n\n**Neo-tree** is a Neovim plugin to browse the file system and other tree like structures in whatever style suits you, including sidebars, floating windows, `netrw` split style, or all of them at once!\n\n### Best **Neo-tree** keymaps and/or actions\n\n- Create a *new file* or *directory* just by typing the key `a` when `Neo-tree` is active. If the input name ends with a `/`, it will create a directory instead.\n\n- A `.` sets the current highlighted entry as the root directory. `\u003cbs\u003e` will navigate one above the *cwd*. `\u003cCR\u003e` will enter on selection.\n\n![Create file or directory](./assets/nt-create-file-dir.png)\n\n## Other niceties\n\n### [dressing](https://github.com/stevearc/dressing.nvim)\n\nBetter `Neovim` UI\n\n### [mini-indentscope](https://github.com/echasnovski/mini.indentscope)\n\nShows in the editor's UI the current level of indentation where the cursor is with a nice vertical guide\n\n### [indent-blankline](https://github.com/lukas-reineke/indent-blankline.nvim)\n\nShows indentation guides\n\n### [Mini Animate](https://github.com/echasnovski/mini.animate)\n\nPlugin for animate common `Neovim` actions\n\n## Skipping disturbing notification\n\nUI notifications can be a bit annoying at times, specially when they hide source code. You can type `\u003cleader\u003eun` to delete all notifications\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftherustifyer%2Fnvim-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftherustifyer%2Fnvim-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftherustifyer%2Fnvim-config/lists"}