使用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>
答案 0 :(得分:28)
我的.vimrc中有这样的东西:
au BufNewFile *.xml 0r ~/.vim/xml.skel | let IndentStyle = "xml"
au BufNewFile *.html 0r ~/.vim/html.skel | let IndentStyle = "html"
等等,无论你需要什么。
答案 1 :(得分:15)
您可以将骨架/模板保存到文件中,例如〜/ vim / skeleton.xml
然后将以下内容添加到.vimrc
augroup Xml
au BufNewFile *.xml 0r ~/vim/skeleton.xml
augroup end
答案 2 :(得分:7)
对于迟到感到抱歉,但我觉得I do it可能对某些人有用。它使用文件的文件类型,使其比传统方法更短,更动态。它仅在Vim 7.3上进行了测试。
if has("win32") || has ('win64')
let $VIMHOME = $HOME."/vimfiles/"
else
let $VIMHOME = $HOME."/.vim/"
endif
" add templates in templates/ using filetype as file name
au BufNewFile * :silent! exec ":0r ".$VIMHOME."templates/".&ft
答案 3 :(得分:5)
如果您想让您的骨架适应上下文或用户选择,请查看vim.wikia上列出的模板 - 扩展器插件
答案 4 :(得分:1)
以下是使用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
答案 5 :(得分:1)
您可以在读取或创建文件时添加各种挂钩。到
:help event
并阅读那里的内容。你想要的是
:help BufNewFile
答案 6 :(得分:0)
它也可以与snipmate一起使用:
augroup documentation
au!
au BufNewFile *.py :call ExecuteSnippet('docs')
augroup END
function! ExecuteSnippet(name)
execute "normal! i" . a:name . "\<c-r>=TriggerSnippet()\<cr>"
endfunction
用“docs”触发片段。
它适用于多个片段,但随后出现:messages窗口,这很麻烦。
答案 7 :(得分:0)
我为html编写了一个插件:
关于vim脚本:http://www.vim.org/scripts/script.php?script_id=4845