DEV Community

pianocomposer321
pianocomposer321

Posted on • Updated on

project-templates.nvim

A Neovim Project Management Plugin https://github.com/pianocomposer321/project-templates.nvim

project-templates.nvim

I made this plugin mainly out of pure frustration. I had been using the extension Project Templates back when I used VSCode as my IDE, and I had come to rely on it. When I migrated to Neovim, I thought "this extension was sooo helpfull! Clearly there must be an equivialent for vim, right?" I went searching and searching, but I couldn't find anything. There were plugins that created templates for individual files, and even multiple related files, like templator_vim, but nothing that creates templates for an entire project, that defines the project structure and boilerplate code for each necessary file. In most IDEs, the IDE will take care of these things for you automatically when you start a new project. But with vim, you have to create each individual file and folder yourself. This plugin aims to fix that.

Demo

demo.gif

Quick Start

Requirements

You will need neovim compiled with python3 support. To determine whether or not your neovim has python support, type :echo has('python3') and press enter. If it outputs 1, you have python3 support, otherwise you will need to run the command pip install pynvim.

You will also need to run the command pip install binaryornot.

Installation

Add this to your init.vim:

  • vim-plug:

    • Plug 'pianocomposer321/project-templates.nvim', { 'do': ':UpdateRemotePlugins' }
  • Vundle:

    • Plugin 'pianocomposer321/project-templates.nvim', { 'do': ':UpdateRemotePlugins'}

etc, etc.

Then run :PlugInstall (vim-plug) or :PluginInstall (Vundle).

Finally, restart Neovim.

Usage

  • :LoadTemplate - Load a template into a new project. The plugin will look for placeholders (e.g. #{PLACEHOLDER}), and ask for values to replace them in each non-binary file
  • :DeleteTemplate - Delete a template
  • :SaveAsTemplate - Save the current folder and all files and subfolders as a new template

The plugin will look for templates in ~/.templates. Sample templates can be found at https://github.com/pianocomposer321/project-template-samples. If you want to create your own templates, simply create a new project, add the placeholders you want, and save it in ~/.templates, or use the :SaveAsTemplate command.

Credits

Finder.vim - https://vim.fandom.com/wiki/Implement_your_own_interactive_finder_without_plugins

Inspired by This Sublime text plugin and this VS Code Extension.

Latest comments (4)

Collapse
 
muhimen123 profile image
Muhimen

I am a nvim user too. Talking about templates, I have written a simple Python script with some file operations that can generate templates for me.
The extension looks good too. I'l check it out. Thanks.

Collapse
 
pianocomposer321 profile image
pianocomposer321

Have you tried the extension yet? What did you think? Do you have any suggestions as to how it could be improved?

Thanks in advance,
pianocomposer321

Collapse
 
pianocomposer321 profile image
pianocomposer321

Thanks for the feedback!

Have you posted your script on GitHub? I'd love to take a look!

Collapse
 
muhimen123 profile image
Muhimen

Sorry, it's for personal use only. 😋