VIM+LaTeX 自动补全

先看看效果如何:

Vim latex 自动补全

一般情况下,小的文档都是用 texworks 编辑的。但是 texworks 不如 vim 的操作方便,所以今天配置了一下。需要先安装 vim-plug

然后安装 ultisnipsvim-snippets

" vim-plug
call plug#begin('~/.vim/plugged')

Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'

call plug#end()"

接着配置 ultisnips

mkdir ~/.vim/UltiSnips
cd  ~/.vim/UltiSnips
cd .>tex.snippets

现在打开用vim打开 tex.snippets

:e ~/.vim/tex.snippets

定义一个文档snippet:

snippet doca "article" b
\documentclass[11pt]{article}
\usepackage{fontspec, xunicode, xltxtra}
\usepackage[tmargin=1in,bmargin=1in,lmargin=1.25in,rmargin=1.25in]{geometry}
\setmainfont{STSongti-TC-Bold}[
       BoldFont        = ToppanBunkyuMidashiMinchoStdN-ExtraBold,
       ItalicFont      = HYShangWeiShouShuW-Regular,
       %BoldItalicFont = texgyrepagella-bolditalic.otf
 ]
\usepackage{etoolbox}}

\begin{document}
    ${0}
\end{document}
endsnippet

$0 代表鼠标所在的位置
b 代表

UltiSnips 会自动抓取最新的修改,所以我们不用重启 vim,只要保存了 snippet 文件,就可以直接使用。简单来说,定义的一段 snip 的格式是这样的:

  • snippet 关键词 “说明” 设定
  • 内容
  • endsnippet

在刚才那段 snip 里,std 就是我们可以展开的 关键词,"use namespace std"是一段说明(如果你用一些自动补全的插件,这段说明就会显示出来,我们之后自然会提到,放心),而 b 的是关于这个 snip 的设定,

  • b 代表只有关键词出现在行首的时候,才可以被展开
  • A 代表自动展开
  • w 代表可以展开这个 “词”,具体 “词” 的定义可以查看 :help iskeyword。直观感觉就是,这个关键词是单独的,和其他文字分开的。比如前后都是空格。
  • i 代表可以忽略前后字节,直接展开关键词。(这个设定比 w 要更松)
    其他的还有r, s, t, m 等等,都可以通过这个命令在自带文档里找到:
:help ultisnip

来看看别人效果

image

代码如下:

snippet class "class" b
class ${1:Class}{
public:
    // constructors, asssignment, destructor
    $1();
    $1(const $1&);
    $1& operator=(const $1&);
    ~$1();
private:

};
endsnippet

这是我的基本配置:

snippet doca "article" b
\documentclass[11pt]{article}
\usepackage{fontspec, xunicode, xltxtra}
\usepackage[tmargin=1in,bmargin=1in,lmargin=1.25in,rmargin=1.25in]{geometry}
\setmainfont{STSongti-TC-Bold}[
      BoldFont        = ToppanBunkyuMidashiMinchoStdN-ExtraBold,
      ItalicFont      = HYShangWeiShouShuW-Regular,
      %BoldItalicFont = texgyrepagella-bolditalic.otf
]
\usepackage{etoolbox}}

\begin{document}
   ${0}
\end{document}
endsnippet
   


snippet docb "book" b
\documentclass[11pt]{book}
\usepackage{fontspec, xunicode, xltxtra}
\usepackage[tmargin=1in,bmargin=1in,lmargin=1.25in,rmargin=1.25in]{geometry}
\setmainfont{STSongti-TC-Bold}[
      BoldFont        = ToppanBunkyuMidashiMinchoStdN-ExtraBold,
      ItalicFont      = HYShangWeiShouShuW-Regular,
      %BoldItalicFont = texgyrepagella-bolditalic.otf
]

\usepackage{fontenc}

\begin{document}
   ${0}
\end{document}
endsnippet

snippet bfd "bdseries"
{\bfseries ${0}}
endsnippet

snippet ttd "ttfamily"
{\ttfamily ${0}}
endsnippet

snippet sfd "sffamily"
{\sffamily ${0}}
endsnippet

snippet scd "scshape"
{\scshape ${0}}
endsnippet

snippet sld "slshape"
{\slshape ${0}}
endsnippet

snippet itd "itshape"
{\itshape ${0}}
endsnippet

snippet upd "upshape"
{\upshape ${0}}
endsnippet

snippet emd "em"
{\em ${0}}
endsnippet

snippet bf "textbf"
{\textbf ${0}}
endsnippet

snippet tt "texttt"
{\texttt ${0}}
endsnippet

snippet sf "textsf"
{\textsf ${0}}
endsnippet

snippet sc "textsc"
{\textsc ${0}}
endsnippet

snippet sl "textsl"
{\textsl ${0}}
endsnippet

snippet it "textit"
{\textit ${0}}
endsnippet

snippet tup "textup"
{\textup ${0}}
endsnippet

snippet abs "abstract"
\begin{abstract}
 ${0}
\end{abstract}
endsnippet

snippet ali "align"
\begin{align}
 ${0}
\end{align}
endsnippet

snippet tab "tabular"
\begin{tabular}
 \item ${0}
\end{tabular}
endsnippet

snippet app "appendix"
\begin{appendix}
 ${0}
\end{appendix}
endsnippet

snippet bma "bmatrix"
\begin{bmatrix}
 ${0}
\end{bmatrix}
endsnippet

snippet pma "pmatrix"
\begin{pmatrix}
 ${0}
\end{pmatrix}
endsnippet

snippet cas "cases"
\begin{cases}
 ${0}
\end{cases}
endsnippet

snippet des "description"
\begin{description}
 \item[${0}]
\end{description}
endsnippet

snippet cen "center"
\begin{center}
 ${0}
\end{center}
endsnippet

snippet equ "equation"
\begin{equation}
 ${0}
\end{equation}
endsnippet

snippet enu "enumerate"
\begin{enumerate}
 ${0}
\end{enumerate}
endsnippet

snippet eqn "eqnarray"
\begin{eqnarray}
 ${0}
\end{eqnarray}
endsnippet

snippet fig "figure"
\begin{figure}
 ${0}
\end{figure}
endsnippet

snippet fla "flalign"
\begin{flalign}
 ${0}
\end{flalign}
endsnippet

snippet gat "gather"
\begin{gather}
 ${0}
\end{gather}
endsnippet

snippet ite "item"
\begin{item}
 \item ${0}
\end{item}
endsnippet

snippet let "letter"
\begin{letter}
 ${0}
\end{letter}
endsnippet

snippet lis "list"
\begin{list}
 ${0}
\end{list}
endsnippet

snippet min "minipage"
\begin{minipage}
 ${0}
\end{minipage}
endsnippet

snippet mul "multiline"
\begin{multiline}
 ${0}
\end{multiline}
endsnippet

snippet pic "picture"
\begin{picture}
 ${0}
\end{picture}
endsnippet

snippet spl "split"
\begin{split}
 ${0}
\end{split}
endsnippet

snippet sub "subequations"
\begin{subequations}
 ${0}
\end{subequations}
endsnippet

snippet the "theorem"
\begin{theorem}
 ${0}
\end{theorem}
endsnippet

snippet tit "titlepage"
\begin{titlepage}
 ${0}
\end{titlepage}
endsnippet

snippet tri "trivlist"
\begin{trivlist}
 ${0}
\end{trivlist}
endsnippet

snippet var "varwidth"
\begin{varwidth}
 ${0}
\end{varwidth}
endsnippet

snippet ver "verbatim"
\begin{verbatim}
 ${0}
\end{verbatim}
endsnippet

snippet tex "\TeX"
{\TeX}${0}
endsnippet

snippet lx "\LaTeX"
{\LaTeX}${0}
endsnippet

snippet ttl "\title{}"
\title{${0}}
endsnippet

snippet aut "\author"
\author{${0}}
endsnippet

snippet cha "\chapter"
\chapter{${0}}
endsnippet

snippet sec "\section"
\section{${0}}
endsnippet

snippet subs "\subsection"
\subsection{${0}}
endsnippet

snippet [ "\[...\]"
\[
   ${0}
\]
endsnippet

snippet $ "$...$ inline"
$${0}$
endsnippet

snippet $$ "$$...$$"
$$
   ${0}
$$
endsnippet

snippet fl "\flushleft"
{\flushleft ${0}}
endsnippet

snippet fr "\flushright"
{\flushright ${0}}
endsnippet

参考:

  1. https://vimzijun.net/2016/10/30/ultisnip/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,431评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,637评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,555评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,900评论 1 318
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,629评论 6 412
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,976评论 1 328
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,976评论 3 448
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,139评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,686评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,411评论 3 358
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,641评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,129评论 5 364
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,820评论 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,233评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,567评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,362评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,604评论 2 380