template.nvim is a neovim plugin that allows neovim users to <action>
.
- Modern Plugin Architecture: Ready-to-go Neovim plugin template with best practices
- Unified Command System: Modern command interface with tab completion support
- Type Safety: Comprehensive type annotations using LSP-compatible
@class
and@param
- DRY Code Patterns: Reusable helper functions and modular design
- CI/CD Ready: Lint and test GitHub Actions included
- Auto Documentation: GitHub Action to auto-generate vimdocs
- Professional README: Complete template with modern formatting
- Integration Ready: Works seamlessly with mkrepo
- Latest version of
neovim
-- Lazy
{
'2kabhishek/template.nvim',
cmd = { 'Template' },
keys = { '<leader>th', '<leader>tH', },
-- Add your custom configs here, keep it blank for default configs (required)
opts = {},
-- Use this for local development
-- dir = '~/path-to/template.nvim',
},
- Fork the
template.nvim
repo - Update the plugin name, file names etc, change
template
toyour-plugin-name
- Add the code required for your plugin:
- Code entrypoint: template.lua - Main setup function
- User configs: config.lua - Configuration with type annotations
- Commands: commands.lua - Modern command system with completion
- Plugin logic: module.lua - Core functionality with type safety
- Additional modules: Add more modules under modules directory as needed
- Command System Features:
- Unified command interface with subcommands
- Tab completion support for better UX
- Reusable helper functions for DRY code
- Comprehensive type annotations for better development experience
- Add test code to the tests directory
- Update the README with your plugin's functionality
- Tweak the docs action file to reflect your plugin name, commit email and username
- Generating vimdocs needs read and write access to actions (repo settings > actions > general > workflow permissions)
template.nvim can be configured using the following options:
template.setup({
name = 'template.nvim', -- Name to be greeted, 'World!' by default
add_default_keybindings = true, -- Whether to add default keybindings
})
template.nvim
provides a unified command interface with tab completion:
Template greet [name]
- Shows a hello message with the specified name (with tab completion)Template notify [message]
- Shows a notification with custom message
Here are the default keybindings:
Keybinding | Command | Description |
---|---|---|
<leader>th |
Template greet |
Template greet default name |
<leader>tH |
Template greet Neovim |
Template greet Neovim |
You can disable default keybindings by setting
add_default_keybindings = false
in your config.
Run :help template.txt
for more details.
Planning to add <feature/module>
.
- Setup repo
- Think real hard
- Start typing
template.nvim was inspired by nvim-plugin-template, I added some changes on top to make setting up a new plugin faster.
- The main challenges were
<issue/difficulty>
- I learned about
<learning/accomplishment>
- dots2k β Dev Environment
- nvim2k β Personalized Editor
- sway2k β Desktop Environment
- qute2k β Personalized Browser
- nerdy.nvim β Find nerd glyphs easily
- tdo.nvim β Fast and simple notes in Neovim
- termim.nvim β Neovim terminal improved
- octohub.nvim β Github repos in Neovim
- exercism.nvim β Exercism exercises in Neovim
β hit the star button if you found this useful β
Source | Blog | Twitter | LinkedIn | More Links | Other Projects