{"id":13413170,"url":"https://github.com/tokiory/neovim-boilerplate","last_synced_at":"2025-09-22T20:30:47.758Z","repository":{"id":159246687,"uuid":"634510177","full_name":"tokiory/neovim-boilerplate","owner":"tokiory","description":"Modern Neovim Boilerplate ✨","archived":false,"fork":false,"pushed_at":"2024-07-12T07:19:03.000Z","size":34,"stargazers_count":94,"open_issues_count":0,"forks_count":10,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-07-31T20:51:59.214Z","etag":null,"topics":["boilerplate","config","neovim","nvim","starter"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tokiory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-04-30T11:13:14.000Z","updated_at":"2024-07-13T16:29:19.000Z","dependencies_parsed_at":"2024-10-26T09:09:47.707Z","dependency_job_id":"d978cd3b-6879-4c55-9f9f-384d8f06958d","html_url":"https://github.com/tokiory/neovim-boilerplate","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokiory%2Fneovim-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokiory%2Fneovim-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokiory%2Fneovim-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tokiory%2Fneovim-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tokiory","download_url":"https://codeload.github.com/tokiory/neovim-boilerplate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233883829,"owners_count":18745387,"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":["boilerplate","config","neovim","nvim","starter"],"created_at":"2024-07-30T20:01:34.423Z","updated_at":"2025-09-22T20:30:47.753Z","avatar_url":"https://github.com/tokiory.png","language":"Lua","funding_links":[],"categories":["Starter Templates","Pre-made Configuration","Lua"],"sub_categories":["OS-specific","Stats Tracking"],"readme":"![image](https://user-images.githubusercontent.com/101672047/235722220-dbf567c4-4e8f-4bb1-8f9a-1d6a221cda33.png)\n\nBoilerplate for Neovim. A simple, well-documented template to start building your own configuration. I've created a lot of configurations before neovim introduced Lua. From time to time I saw repeating patterns: creating directories, importing the same files, and much more. I decided to create a boilerplate so that when creating a new configuration, I didn’t have to write everything from the very beginning.\n\nAlso, this boilerplate will be useful for beginners who do not know where to start writing their configuration. All files are well documented, at the top of each file you can find a frontmatter with the necessary data.\n\n## Use it\n\nYou can use this template with the following command:\n\n```bash\n[ -d $HOME/.config/nvim ] \u0026\u0026 mv $HOME/.config/{nvim,nvim.old}; \\\n    git clone https://github.com/tokiory/neovim-boilerplate $HOME/.config/nvim\n```\n\n\u003e [!WARNING]\n\u003e Before using this configuration you will need NodeJS and Go (for Nodejs and Go LSP).\n\u003e You can install it with your favorite package manager, but, I recommend using asdf.\n\u003e You can get it [from this repo](https://github.com/asdf-vm/asdf).\n\u003e After installation you will need to enter the following commands:\n\u003e\n\u003e ```bash\n\u003e asdf plugin add nodejs\n\u003e asdf plugin add golang\n\u003e asdf install golang \u003cany version from 1.20\u003e\n\u003e asdf install nodejs \u003cany version from 16\u003e\n\u003e ```\n\n# Structure\n\n```\n.\n├── init.lua                  -- Entry point\n├── lua\n│  ├── plugins                -- Plugin configurations\n│  ├── helpers\n│  │  └── globals.lua         -- Global variables (aliases)\n│  └── settings.lua           -- Settings for neovim\n└── README.md\n```\n\n## How does lazy.lua load plugins\n\nEvery file inthe `lua/plugins` directory represents a separate plugin configuration, and is automatically loaded by [lazy.nvim](https://github.com/folke/lazy.nvim). The `init.lua` file (or your main config) tells lazy.nvim to scan this folder and load each file as a plugin specification.\n\nThis means you can add, remove, or edit plugin configs by simply creating or editing files in `lua/plugins/`. Each file should return a [Lua table](https://www.lua.org/pil/2.5.html) describing the plugin and its options (see the examples in this repo). lazy.nvim will handle loading, dependencies, and lazy-loading based on the options you specify (like `event`, `keys`, `cmd`, etc).\n\n## Where to put keybindings\nIf you have some global keybindings, you should put them into `lua/keybindings.lua`. This file is intended to be the central place for all your custom key mappings that are not specific to a single plugin. Keeping your keybindings organized in one place makes it easier to manage, update, or troubleshoot them as your configuration grows.\n\nWhen defining a new shortcut, it's highly recommended to use [which-key.nvim](https://github.com/folke/which-key.nvim) (often referred to as `wk` in configs). which-key provides a helpful popup that shows available keybindings in context, making it much easier to discover and remember your shortcuts. You can register keybindings with descriptions, group related mappings, and even set up leader-key menus for a more intuitive workflow.\n\nIf you want to add plugin-specific keybindings, you can also define them directly in the corresponding plugin config file inside `lua/plugins/`, using the `keys` field in the plugin spec table. However, for global or cross-plugin shortcuts, `lua/keybindings.lua` is the best place.\n\n\u003e [!NOTE]\n\u003e **Remember**: Consistency and documentation are key! Add descriptions to your keybindings so which-key can display them, and keep related mappings grouped together for clarity.\n\n# Packed Plugins\n\n- [lazy.nvim](https://github.com/folke/lazy.nvim)\n- [mason.nvim](https://github.com/williamboman/mason.nvim)\n- [which-key.nvim](https://github.com/folke/which-key.nvim)\n- [telescope](https://github.com/nvim-telescope/telescope.nvim)\n- [cmp](https://github.com/hrsh7th/nvim-cmp)\n- [lspkind](https://github.com/onsails/lspkind.nvim)\n- [Git Signs](https://github.com/lewis6991/gitsigns.nvim)\n- [trouble.nvim](https://github.com/folke/trouble.nvim)\n- [Tree Sitter](https://github.com/tree-sitter/tree-sitter)\n- [mini.nvim](https://github.com/echasnovski/mini.nvim)\n\n## Opionated standards\n\n- Use lazy.nvim as a plugin manager, it is fast, simple and has a nice user interface;\n- Use Mason with mason-lspconfig to manage LSP servers;\n- Use which-key to handle all keyboard shortcuts because it's easy and fun to use;\n- Use mini.files as your main explorer because it is fast and minimalistic;\n- Use cmp.nvim with lspkind as a completion manager as it provides great source support for completion;\n- Use gitsigns to work with git stashes because it gives good highlights;\n- Use Trouble nvim as an alternative to quicklist because it has a nice interface;\n- Use Treesitter (actually standard) to search for files, content and other pickers;\n- Use your favorite theme, you can comment Vitesse, there are several configs for different themes;\n- Use mini.nvim for editor utilities because mini.nvim provides a great experience and is as minimalistic as possible;\n\n## 💡 Tips\n\n- Rewrite it from scratch (it’s a template, cmon), you can replace each plugin with your favorite one;\n- RTFM, each plugin has a comment with a link to the repository;\n- Don't be afraid to break something. Remember: you can fork this repo as much as you like, just don't be afraid to break it;\n\n[![Star History Chart](https://api.star-history.com/svg?repos=tokiory/neovim-boilerplate\u0026type=Date)](https://star-history.com/#tokiory/neovim-boilerplate\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftokiory%2Fneovim-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftokiory%2Fneovim-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftokiory%2Fneovim-boilerplate/lists"}