Vim中生成LaTeX模板的VimScript代码如何优化去重?
优化方案
方案1:列表批量插入(最推荐,无需额外文件)
把所有模板内容集中存到VimScript列表中,一次性插入到缓冲区,完全消除重复的normal语句,后续修改模板只需调整列表内容即可:
function CreateLatexTemplate() let l:latex_tpl = [ \ '\documentclass[10pt,a4paper]{article}', \ '\usepackage[latin1]{inputenc}', \ '\usepackage[T1]{fontenc}', \ '\usepackage{amsmath}', \ '\usepackage{amsfonts}', \ '\usepackage{amssymb}', \ '\usepackage{graphicx}', \ '\usepackage[left=1.00cm, right=1.00cm, top=1.00cm, bottom=1.00cm]{geometry}', \ '\author{Author Name}', \ '\begin{document}', \ '', \ '\end{document}' \ ] " 把模板内容插入到缓冲区第0行(即开头位置) call append(0, l:latex_tpl) " 跳转光标到document环境内的空行,和你原逻辑效果完全一致 normal gg11j endfunction autocmd BufNewFile *.tex call CreateLatexTemplate()
优势:
- 无冗余代码,模板内容集中管理,增删修改非常方便
- 执行效率比反复调用
normal命令更高 - 不需要额外维护独立模板文件,配置聚合度高
方案2:读取外部模板文件(适合模板复杂、修改频繁场景)
如果你的LaTeX模板后续会经常调整、内容较多,可以把模板单独存为独立的.tex文件(比如路径为~/.vim/templates/latex_default.tex),函数直接读取文件内容写入缓冲区:
function CreateLatexTemplate() " 读取模板文件内容插入到缓冲区开头 0r ~/.vim/templates/latex_default.tex " 自动跳转光标到document环境内部 execute "normal /\\begin{document}\<CR>o" endfunction autocmd BufNewFile *.tex call CreateLatexTemplate()
优势:
- 模板和Vim配置分离,修改模板不需要改动VimScript代码
- 支持多模板切换,只需要修改读取的文件路径即可
内容的提问来源于stack exchange,提问作者Iyach tharwa nambarek
相关产品推荐
相关产品推荐

