这实际上是一个新手问题 - 但基本上,我如何为某些文件类型启用模板.
基本上,我只是希望模板插入一个类别的标题,即我发现有用的一些函数,以及加载的库等.
我解释
:help templates
Run Code Online (Sandbox Code Playgroud)
我应该把它放在我的vimrc中的方式
au BufNewFile,BufRead ~/.vim/skeleton.R
Run Code Online (Sandbox Code Playgroud)
运行R脚本然后显示可能发生的事情,但显然不会:
--- Auto-Commands ---
Run Code Online (Sandbox Code Playgroud)
这可能是因为模板由命令组成(并且在skeleton.R中没有这样的命令) - 在这种情况下,我只是希望它插入一个文本标题(由skelton.R组成).
对不起,如果这个问题是令人头疼的傻瓜; - /
DrA*_*rAl 26
您建议的命令不起作用:无论何时打开,它都会执行没有Vim命令 ~/.vim/skeleton.R
实现您想要的东西的粗略方法是使用:
:au BufNewFile *.R r ~/.vim/skeleton.R
Run Code Online (Sandbox Code Playgroud)
:r每当*.R创建新文件时,这将读取()您的文件.您希望避免BufRead进入autocmd,或者每次打开文件时它都会将骨架文件读入您的工作文件!
有许多插件可以为此过程添加更多控件.作为作者,因此完全有偏见,我推荐这个,但这里列出了很多其他的.
无耻插头:
它们都以相对类似的方式工作,但要解释我的脚本:
您按照链接页面上的描述安装插件,然后在其中创建一些模板~/.vim/templates.这些模板应该与"目标"文件具有相同的扩展名,因此如果它是.R文件的模板,请将其称为skeleton.R.在你的.vimrc,添加这样的东西:
let g:file_template_default = {}
let g:file_template_default['R'] = 'skeleton'
Run Code Online (Sandbox Code Playgroud)
然后创建新.R文件(使用文件名,如果它是新的则保存)并输入:
:LoadFileTemplate
Run Code Online (Sandbox Code Playgroud)
您也可以跳过.vimrc编辑,然后执行以下操作:
:LoadFileTemplate skeleton
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请访问网站.
小智 9
假设您的骨架在〜/ .vim/templates /目录中,您可以将此代码段放在vimrc文件中.
augroup templates
au!
" read in templates files
autocmd BufNewFile *.* silent! execute '0r ~/.vim/templates/skeleton.'.expand("<afile>:e")
augroup END
Run Code Online (Sandbox Code Playgroud)
一些解释,
另见http://vim.wikia.com/wiki/Use_eval_to_create_dynamic_templates
*修复了文件路径中缺少的点
在文件夹中创建templates子目录~/.vim
$ mkdir -p ~/.vim/templates
Run Code Online (Sandbox Code Playgroud)
在名为R.skeleton的子目录中创建一个新文件,并在创建新的" .R "文件时放入要自动加载的标题和/或其他内容.
$ vim ~/.vim/templates/R.skeleton
Run Code Online (Sandbox Code Playgroud)
然后,将以下内容添加到您的~/.vimrc文件中,这可能是以"访客"的方式建议的
autocmd BufNewFile * silent! 0r $HOME/.vim/templates/%:e.skeleton
Run Code Online (Sandbox Code Playgroud)
查看我的github存储库以获取更多详细信息和其他选项.