Quick insert tempalte
-- with lazy.nvim
{'glepnir/template.nvim', cmd= {'Template','TemProject'}, config=function()
require('template').setup({
-- config in there
})
end}
-- lazy load you can use cmd or ft. if you are using cmd to lazyload when you edit the template file-- you may see some diagnostics in template file. use ft to lazy load the diagnostic not display-- when you edit the template file.{
temp_dir-- template directoryauthor-- your nameemail-- email address
}{{_date_}}insert current date{{_cursor_}}set cursor here{{_file_name_}}current file name{{_author_}}author info{{_email_}}email adrress{{_variable_}}variable name{{_upper_file_}}all-caps file name{{_camel_case_file_}}converts snake_case file name to CamelCase{{_lua:vim.fn.expand(%:.:r)_}}set by lua script
You need to configure the setting variable temp_dir.
An example configuration: temp_dir = '~/.config/nvim/templates'.
Create the directory at the location specified then proceed to add
template files.
As an example create the file main_owner.go in the temp_dir
directory you set (e.g. ~/.config/nvim/templates/main_owner.go)
Nested folders are also supported (e.g. ~/.config/nvim/templates/rust/http.rs)
// Copyright {{_date_}} {{_author_}}. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package {{_file_name_}}
funcmain() {
{{_cursor_}}
}You can use lua inside the template with {{_lua:}}. For example
---created: {{_lua:os.date("%y/%m/%d %H/%M")_}}---above template generates below lines.
---created: 2022/12/29 21:52---- Work with existing file
if there has a file main.go, and open it input Template <Tab> . select the template main_owner
It will insert template to this file like
// Copyright 2022-07-05 21:05:36 glephunter. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package main
funcmain() {
|--cursorinthere
}- Work with not exist file
use Template test.go <TAB>, it will create a file named test.go in current path and auto open
this file insert template.
- Work with not exist file and custom variable
A lua template file named nvim_temp.lua, content is
localapi,fn=vim.api,vim.fnlocal {{_variable_}}
{{_cursor_}}
return {{_variable_}}
Use Template test.lua <TAB> then it will auto fill template name nvim_temp if there
is only one lua template file. If are any _variable_ items in the template file it will
prompt you for these values.
localapi,fn=vim.api,vim.fnlocaltemplate
| -- cursor herereturntemplate- Use tpl file
Also you can use *.tpl as a template this extension can avoid trigger FileType event .like start a
lsp server by Filetype event.
a rule of tpl template is you must set ;; filetype in first line like a rust template file
http.tpl and first line must be ;; rust
- Add a new template expression
require('template').register('{{_path_}}', function() vim.fn.expand('%') end)- Config a fancy keymap
vim.keymap.set('n', '<Leader>t', function()
vim.fn.feedkeys(':Template ')
end, { remap=true})- Find all templates
template.nvim can use telescope, but you need register template telescope extension to telescope
require("telescope").load_extension('find_template')- Use Telescope to create template or insert template
-- This command will create a template file then show all templatesTelescopefind_templatename=templatename-- When you select a template file it will insert this tempalte into current bufferTelescopefind_templatetype=insert-- In both cases you can disable filtering templates by file type by passing `filter_ft=false`Telescopefind_templatetype=insertfilter_ft=falseThen you can use Telescope find_template to check all templates
If you'd like to support my work financially, buy me a drink through paypal
