这确实是一个新手问题 - 但基本上,如何为某些文件类型启用模板。
基本上,我只是希望模板插入某种标头,即一些我认为有用的函数以及加载的库等。
我解释
:help template
我应该将其放置在我的 vimrc 中
au BufNewFile,BufRead ~/.vim/skeleton.R
运行 R 脚本显示可能会发生某些事情,但显然没有:
--- Auto-Commands ---
这可能是因为模板由命令组成(在 sculpture.R 中没有这样的命令) - 在这种情况下,我只想它插入一个文本标题(由 skelton.R 组成)。
抱歉,如果这个问题是令人难以置信的愚蠢;-/
您建议的命令不起作用:这会在您每次打开时不运行 Vim 命令
~/.vim/skeleton.R
实现你想要的效果的一个粗略方法是使用:
:au BufNewFile *.R r ~/.vim/skeleton.R
每当创建新的
:r
文件时,都会读取 (*.R
) 您的文件。 您希望避免在 autocmd 中出现 BufRead
,否则每次您打开文件时它都会将骨架文件读入您的工作文件!
有许多插件可以为此过程添加更多控制。 作为作者,因此完全有偏见,我推荐这个,但是这里列出了很多其他的。
无耻插件:
它们的工作方式都相对相似,但解释一下我的脚本:
您按照linked页面上的说明安装插件,然后在
~/.vim/templates
中创建一些模板。 这些模板应与“目标”文件具有相同的扩展名,因此,如果它是 .R
文件的模板,请将其命名为 skeleton.R
之类的名称。 在您的 .vimrc
中,添加如下内容:
let g:file_template_default = {}
let g:file_template_default['R'] = 'skeleton'
然后创建新的
.R
文件(带有文件名,如果是新的请保存它)并输入:
:LoadFileTemplate
您也可以跳过
.vimrc
编辑,只需执行:
:LoadFileTemplate skeleton
请参阅网站了解更多详情。
假设你的骨架在你的 ~/.vim/templates/ 目录中,你可以把这个 vimrc 文件中的片段。
augroup templates
au!
" read in templates files
autocmd BufNewFile *.* silent! execute '0r ~/.vim/templates/skeleton.'.expand("<afile>:e")
augroup END
一些解释,
另请参阅 http://vim.wikia.com/wiki/Use_eval_to_create_dynamic_templates
*修复了文件路径中缺少的点
在您的 ~/.vim
文件夹中创建一个
templates子目录
$ mkdir -p ~/.vim/templates
在名为 R.骨骼 的子目录中创建一个新文件,并放入标头和/或您想要在创建新的“.R”文件时自动加载的其他内容。
$ vim ~/.vim/templates/R.skeleton
然后,将以下内容添加到您的
~/.vimrc
文件中,该文件可能已由“访客”以某种方式建议
autocmd BufNewFile * silent! 0r $HOME/.vim/templates/%:e.skeleton
查看我的 github 存储库,了解更多详细信息和其他选项。
这只是我以前用过的一个技巧。 它很便宜,但如果你对 vim 及其命令一无所知,那么它很容易使用。 创建一个像这样的目录:
~/.vim/templates/barney.cpp
正如您所知,barney.cpp 应该是您的模板代码。 然后将像
ForUncleBarney()
这样的函数添加到位于 ~/.vimrc
的 .vimrc 文件末尾
应该是这样的
function ForBarneyStinson()
:read ~/.vim/templates/barney.cpp
endfunction
然后在vim中使用这个命令
:call ForBarneyStinson()
然后你会看到你的模板 作为示例,我已经有两个 .cpp 文件模板
:call ForBarney()
:call ACM()
抱歉说太多了, 编码太棒了! :)
另请查看 https://github.com/aperezdc/vim-template.git。
我使用它并为它贡献了一些补丁,并且认为它的功能相对完整。
存在许多模板文件扩展器——您还会发现有关如何实现基本模板文件扩展器的说明。
就我而言,我正在维护 muTemplate 的分支。首先,只需将
{ft}.template
文件放入 {rtp}/template/
即可。如果您想使用任何 (viml) 变量或表达式,就这样做。如果您愿意,您甚至可以将 vim 代码(现在甚至是函数)放入模板文件中。一些明智的决策已经针对 C++ 和 vim 文件实施。
使用snipmate插件怎么样?请参阅此处