使用vim创建新文件时如何自动添加一些框架代码

时间:2020-03-06 15:01:45  来源:igfitidea点击:

用vim创建新文件时,我想自动添加一些框架代码。

例如,当创建一个新的xml文件时,我想添加第一行:

<?xml version="1.0"?>

或者在创建html文件时,我想添加:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title></title>
  </head>
  <body>
  </body>
</html>

解决方案

这是两个使用python脚本的示例。

在.vimrc或者.vimrc来源的另一个文件中添加类似以下内容:

augroup Xml
  au BufNewFile *.xml :python import vim
  au BufNewFile *.xml :python vim.current.buffer[0:0] = ['<?xml version="1.0"?>']
  au BufNewFile *.xml :python del vim
augroup END

fu s:InsertHtmlSkeleton()
  python import vim
  python vim.current.buffer[0:0] = ['<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">', "<html>", "<head>", "  <title></title>", "</head>", "<body>", "", "</body>", "</html>"]
  python del vim
endfu

augroup Html
  au BufNewFile *.html call <SID>InsertHtmlSkeleton()
augroup END

我们可以在读取或者创建文件时添加各种挂钩。到

:help event

并阅读其中的内容。你想要的是

:help BufNewFile

我的.vimrc中有这样的内容:

au BufNewFile *.xml 0r ~/.vim/xml.skel | let IndentStyle = "xml"
au BufNewFile *.html 0r ~/.vim/html.skel | let IndentStyle = "html"

依此类推,无论我们需要什么。

我们可以将骨架/模板保存到文件,例如〜/ vim / skeleton.xml

然后将以下内容添加到.vimrc中

augroup Xml
    au BufNewFile *.xml 0r ~/vim/skeleton.xml
augroup end

如果我们想使框架适应上下文或者用户选择,请查看vim.wikia上列出的template-expander插件。