如何在vim中使用模板

And*_*eas 20 vim r

这实际上是一个新手问题 - 但基本上,我如何为某些文件类型启用模板.

基本上,我只是希望模板插入一个类别的标题,即我发现有用的一些函数,以及加载的库等.

我解释

: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)

有关详细信息,请访问网站.

  • 使用`0r`而不是`r`,插入不会添加空行. (5认同)

小智 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)

一些解释,

  • BufNewFile . =每次我们编辑新文件
  • 无声!execute =以静默方式执行,如果失败则不会显示错误消息
  • 0r =读取文件并在新文件的顶部(0)插入内容
  • expand(":e")=获取当前文件名的扩展名

另见http://vim.wikia.com/wiki/Use_eval_to_create_dynamic_templates

*修复了文件路径中缺少的点


ILM*_*o_7 6

在文件夹中创建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存储库以获取更多详细信息和其他选项.