这确实是一个新手问题 - 但基本上,我如何为某些文件类型启用模板。
基本上,我只是希望模板插入一个类别的标题,即一些我认为有用的函数,以及加载的库等。
我解释
:help templates
我应该把它放在我的vimrc中的方式
au BufNewFile,BufRead ~/.vim/skeleton.R
运行R脚本然后显示可能发生的事情,但显然不会:
--- Auto-Commands ---
这可能是因为模板由命令组成(并且在skeleton.R中没有这样的命令) - 在这种情况下,我只是希望它插入一个文本标题(由skelton.R组成)。
很抱歉,如果这个问题让人头疼,那就愚蠢了! - /
答案 0 :(得分:26)
您建议的命令不起作用:无论何时打开~/.vim/skeleton.R
实现你想要的东西的粗略方法是使用:
:au BufNewFile *.R r ~/.vim/skeleton.R
每当创建新的:r
文件时,这将读取(*.R
)您的文件。您希望避免在autocmd中使用BufRead
,或者每次打开文件时它都会将骨架文件读入您的工作文件中!
有许多插件可以为此过程添加更多控件。作为作者,因此完全有偏见,我建议this one,但还有很多其他人列出here。
无耻插头:
他们都以相对类似的方式工作,但要解释我的剧本:
按照linked页面上的说明安装插件,然后在~/.vim/templates
中创建一些模板。这些模板应与“目标”文件具有相同的扩展名,因此如果它是.R
文件的模板,请将其命名为skeleton.R
。在.vimrc
中添加以下内容:
let g:file_template_default = {}
let g:file_template_default['R'] = 'skeleton'
然后创建新的.R
文件(带有文件名,如果是新的则保存)并输入:
:LoadFileTemplate
您也可以跳过.vimrc
编辑,然后执行:
:LoadFileTemplate skeleton
有关详细信息,请参阅the website。
答案 1 :(得分:9)
假设您的骨架在〜/ .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
*修复了文件路径中缺少的点
答案 2 :(得分:6)
在~/.vim
文件夹
$ mkdir -p ~/.vim/templates
在名为 R.skeleton 的子目录中创建一个新文件,并在创建新的“ .R ”时添加要自动加载的标题和/或其他内容文件。
$ vim ~/.vim/templates/R.skeleton
然后,将以下内容添加到您的~/.vimrc
文件中,可能以“guest”的方式建议
autocmd BufNewFile * silent! 0r $HOME/.vim/templates/%:e.skeleton
请查看my github repository了解更多详情和其他选项。
答案 3 :(得分:2)
这只是我以前使用过的技巧。 它很便宜,但如果你对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()
对不起说了太多,
编码太棒了! :)
答案 4 :(得分:2)
另请查看https://github.com/aperezdc/vim-template.git。
我使用它并为它提供了一些补丁,并认为它的功能相对较全。
答案 5 :(得分:1)
有很多template-file expanders - 你也会找到关于如何实现基本模板文件扩展器的解释。
就我而言,我正在维持muTemplate的分支。要获得简单的开始,只需将{ft}.template
文件放入{rtp}/template/
即可。如果你想使用任何(viml)变量或表达式,那就做。如果您愿意,甚至可以将vim代码(现在甚至是函数)放入模板文件中。已经为C ++和vim文件实现了几个聪明的决定。
答案 6 :(得分:1)
使用snipmate插件怎么样?见here