Vim模板的使用

在习惯了在Linux下办公后,也习惯了使用Vim编辑文本,这里有两种情况,其一是编辑LaTeX文本,其二是编辑一些脚本程序。如果单纯从编辑LaTeX文本,使用vim-latex 插件足够了,但是对于一般情况下的模板,则使用模板插件 vim-template

本人系统已经通过vundle管理vim插件,所以已经安装了插件vim-latex。新建一个空白的tex文本之后,运行 :TTemplate 会有一个模板列表出现,选中相应的数字就可以插入了。

当然默认的模板可能不能满足你的需要,我们可以自定义模板,切换到模板文件夹

1
cd ~/.vim/bundle/vim-latex/ftplugin/latex-suite/templates

仿照里面的现有模板建立符合自己要求的模板就可以了,之后就可以使用:TTemplate 调用模板了。另外我们还可以自定义模板的存储目录,为了规范期间,我不修改这个目录,具体可以参考文档Vim Latex 的使用和配置技巧 (一)

  1. 修改vim配置文件,安装插件
修改~/.vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"```vim
set nocompatible " be iMproved, required
filetype off " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'vim-latex/vim-latex'
Plugin 'aperezdc/vim-template'
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList - lists configured plugins
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line
"```
" This makes vim invoke Latex-Suite when you open a tex file.
filetype plugin on
set grepprg=grep\ -nH\ $*
filetype indent on
let g:tex_flavor='latex'
"
syntax enable
set bg=dark
set nu
"设置配色方案
"colorscheme murphy
colorscheme pablo
"设置列高亮
set cursorcolumn
"设置行线
set cursorline
"显示未执行的命令
set showcmd
"设置自动备份
"set backup
"set backupext=.bak
"保存一个原始文件
"set patchmode=.orig
"设置用命令行版stardict(sdcv)查询单词
"set keywordprg=sdcv
"设定字符编码20180320加入
set encoding=utf-8
set fileencodings=utf-8,cp936
set termencoding=utf-8
"设置缩进
set autoindent shiftwidth=3
"设定软tab键,用来产生四个空格20180323
set softtabstop=4
"打开dtx文件自定义命令
autocmd BufNewFile,BufRead *.dtx source ~/.vim/bundle/vim-latex/ftplugin/dtx.vim
" 自定义模板所在文件夹
let g:templates_directory = '~/.vim/templates'
let g:templates_user_variables = [['EMAIL', 'GetEmail'],['AUTHOR', 'GetAuthor']]
function GetEmail()
return 'fengzhenhua@outlook.com'
endfunction
function GetAuthor()
return '冯振华'
endfunction

在shell里面运行

1
$ vim +BundleInstall

或启动vim,运行

1
:BundleInstall
  1. 自定义模板变量

vim-template 可以自定义模板变量,在~/.vimrc(如果你使用spf13-vim则修改 .vimrc.local ) 中添加

1
2
3
4
5
6
7
let g:templates_user_variables = [['EMAIL', 'GetEmail'],['AUTHOR', 'GetAuthor']]
function GetEmail()
return 'fengzhenhua@outlook.com'
endfunction
function GetAuthor()
return '冯振华'
endfunction

上面都是VimScript的语法,这样你就可以在模板里面写%EMAIL% ,然后模板引擎就会自动调用GetEmail函数,将返回值代替之。

  1. 自定义模板

    • 修改g:templates_directory 到自定义模板所在的文件夹
1
2
# 在.vimrc(如果你使用spf13-vim的话就是.vimrc.local)
let g:templates_directory = '/home/pylego/.vim/templates'
  • ~/.vim/templates中创建模板文件 文件的命名模式是"=template=<pattern>" ,比如我想让每个以py结尾的文件都以这个模板开始就可以创建一个名为"=template=.py"的文件,向文件里面写入模板。注意这个"=template="前缀是可以改动的,具体不在本文讨论了。
  1. 我的配置~/.vim/templates/=template=.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
% 文档编码: utf-8 
% 创建日期: %DATE% %TIME%
% 联系作者: %EMAIL%
% Copyright © %AUTHOR% .
%
\documentclass[a4paper,fontset = windows]{ctexbook} %Linux 下请自己安装windows,Adobe,found 等相关字体
\usepackage{xeCJKfntef}
\usepackage{xcolor}
\usepackage[margin=2cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{patterns}
\usepackage{float}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{multicol}
%\usepackage{mathpazo}
\usepackage[
pdfborder=0 0 0,
bookmarksnumbered=true
]{hyperref}
%\usepackage[user=teacher]{cexam} %此宏包为冯振华原创宏包,需要联系作者添加使用
%\usepackage[fontwarning=off]{ctrlwarning} %此宏包为冯振华原创宏包,用来控制警告信息
%\usepackage{doc}
\usepackage{draftwatermark}
\SetWatermarkText{%AUTHOR%}
%\includeonly{ %如果使用多个源文档,请取消此注释
% <++>,
%}
\begin{document}
\title{\Huge <++>}
\author{%AUTHOR%}
\date{%DATE%}

\maketitle

\tableofcontents

%\include{<++>} %如果使用多个源文档,请取消此注释

<++>

\end{document}