Gilles Castel写的vim中使用的代码片段,质量很高,原文:https://github.com/gillescastel
下载后,存放到 ~/.vim/plugged/ultisnips/UltiSnips
下面是记录一下,该代码片段:
global !p texMathZones = ['texMathZone'+x for x in ['A', 'AS', 'B', 'BS', 'C', 'CS', 'D', 'DS', 'E', 'ES', 'F', 'FS', 'G', 'GS', 'H', 'HS', 'I', 'IS', 'J', 'JS', 'K', 'KS', 'L', 'LS', 'DS', 'V', 'W', 'X', 'Y', 'Z']] texIgnoreMathZones = ['texMathText'] texMathZoneIds = vim.eval('map('+str(texMathZones)+", 'hlID(v:val)')") texIgnoreMathZoneIds = vim.eval('map('+str(texIgnoreMathZones)+", 'hlID(v:val)')") ignore = texIgnoreMathZoneIds[0] def math(): synstackids = vim.eval("synstack(line('.'), col('.') - (col('.')>=2 ? 1 : 0))") try: first = next(i for i in reversed(synstackids) if i in texIgnoreMathZoneIds or i in texMathZoneIds) return first != ignore except StopIteration: return False endglobal snippet template "Basic template" b \documentclass[a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{textcomp} \usepackage[dutch]{babel} \usepackage{amsmath, amssymb} % figure support \usepackage{import} \usepackage{xifthen} \pdfminorversion=7 \usepackage{pdfpages} \usepackage{transparent} \newcommand{\incfig}[1]{% \def\svgwidth{\columnwidth} \import{./figures/}{#1.pdf_tex} } \pdfsuppresswarningpagegroup=1 \begin{document} $0 \end{document} endsnippet snippet beg "begin{} / end{}" bA \\begin{$1} $0 \\end{$1} endsnippet priority 100 snippet ... "ldots" iA \ldots endsnippet snippet table "Table environment" b \begin{table}[${1:htpb}] \centering \caption{${2:caption}} \label{tab:${3:label}} \begin{tabular}{${5:c}} $0${5/((?<=.)c|l|r)|./(?1: & )/g} \end{tabular} \end{table} endsnippet snippet fig "Figure environment" b \begin{figure}[${1:htpb}] \centering ${2:\includegraphics[width=0.8\textwidth]{$3}} \caption{${4:$3}} \label{fig:${5:${3/\W+/-/g}}} \end{figure} endsnippet snippet enum "Enumerate" bA \begin{enumerate} \item $0 \end{enumerate} endsnippet snippet item "Itemize" bA \begin{itemize} \item $0 \end{itemize} endsnippet snippet desc "Description" b \begin{description} \item[$1] $0 \end{description} endsnippet snippet pac "Package" b \usepackage[${1:options}]{${2:package}}$0 endsnippet snippet => "implies" Ai \implies endsnippet snippet =< "implied by" Ai \impliedby endsnippet context "math()" snippet iff "iff" Ai \iff endsnippet snippet mk "Math" wA $${1}$`!p if t[2] and t[2][0] not in [',', '.', '?', '-', ' ']: snip.rv = ' ' else: snip.rv = '' `$2 endsnippet snippet dm "Math" wA \[ ${1:${VISUAL}} .\] $0 endsnippet snippet ali "Align" bA \begin{align*} ${1:${VISUAL}} .\end{align*} endsnippet context "math()" snippet // "Fraction" iA \\frac{$1}{$2}$0 endsnippet snippet / "Fraction" i \\frac{${VISUAL}}{$1}$0 endsnippet context "math()" snippet '((\d+)|(\d*)(\\)?([A-Za-z]+)((\^|_)(\{\d+\}|\d))*)/' "symbol frac" wrA \\frac{`!p snip.rv = match.group(1)`}{$1}$0 endsnippet priority 1000 context "math()" snippet '^.*\)/' "() frac" wrA `!p stripped = match.string[:-1] depth = 0 i = len(stripped) - 1 while True: if stripped[i] == ')': depth += 1 if stripped[i] == '(': depth -= 1 if depth == 0: break; i-=1 snip.rv = stripped[0:i] + "\\frac{" + stripped[i+1:-1] + "}" `{$1}$0 endsnippet context "math()" snippet '([A-Za-z])(\d)' "auto subscript" wrA `!p snip.rv = match.group(1)`_`!p snip.rv = match.group(2)` endsnippet context "math()" snippet '([A-Za-z])_(\d\d)' "auto subscript2" wrA `!p snip.rv = match.group(1)`_{`!p snip.rv = match.group(2)`} endsnippet snippet sympy "sympyblock " w sympy $1 sympy$0 endsnippet priority 10000 snippet 'sympy(.*)sympy' "sympy" wr `!p from sympy import * x, y, z, t = symbols('x y z t') k, m, n = symbols('k m n', integer=True) f, g, h = symbols('f g h', cls=Function) init_printing() snip.rv = eval('latex(' + match.group(1).replace('\\', '').replace('^', '**').replace('{', '(').replace('}', ')') + ')') ` endsnippet priority 1000 snippet math "mathematicablock" w math $1 math$0 endsnippet priority 10000 snippet 'math(.*)math' "math" wr `!p import subprocess code = match.group(1) code = 'ToString[' + code + ', TeXForm]' snip.rv = subprocess.check_output(['wolframscript', '-code', code]) ` endsnippet snippet == "equals" iA &= $1 \\\\ endsnippet snippet != "equals" iA \neq endsnippet context "math()" snippet ceil "ceil" iA \left\lceil $1 \right\rceil $0 endsnippet context "math()" snippet floor "floor" iA \left\lfloor $1 \right\rfloor$0 endsnippet snippet pmat "pmat" iA \begin{pmatrix} $1 \end{pmatrix} $0 endsnippet snippet bmat "bmat" iA \begin{bmatrix} $1 \end{bmatrix} $0 endsnippet context "math()" snippet () "left( right)" iA \left( ${1:${VISUAL}} \right) $0 endsnippet snippet lr "left( right)" i \left( ${1:${VISUAL}} \right) $0 endsnippet snippet lr( "left( right)" i \left( ${1:${VISUAL}} \right) $0 endsnippet snippet lr| "left| right|" i \left| ${1:${VISUAL}} \right| $0 endsnippet snippet lr{ "left\{ right\}" i \left\\{ ${1:${VISUAL}} \right\\} $0 endsnippet snippet lrb "left\{ right\}" i \left\\{ ${1:${VISUAL}} \right\\} $0 endsnippet snippet lr[ "left[ right]" i \left[ ${1:${VISUAL}} \right] $0 endsnippet snippet lra "leftangle rightangle" iA \left<${1:${VISUAL}} \right>$0 endsnippet context "math()" snippet conj "conjugate" iA \overline{$1}$0 endsnippet snippet sum "sum" w \sum_{n=${1:1}}^{${2:\infty}} ${3:a_n z^n} endsnippet snippet taylor "taylor" w \sum_{${1:k}=${2:0}}^{${3:\infty}} ${4:c_$1} (x-a)^$1 $0 endsnippet snippet lim "limit" w \lim_{${1:n} \to ${2:\infty}} endsnippet snippet limsup "limsup" w \limsup_{${1:n} \to ${2:\infty}} endsnippet snippet prod "product" w \prod_{${1:n=${2:1}}}^{${3:\infty}} ${4:${VISUAL}} $0 endsnippet snippet part "d/dx" w \frac{\partial ${1:V}}{\partial ${2:x}} $0 endsnippet context "math()" snippet sq "\sqrt{}" iA \sqrt{${1:${VISUAL}}} $0 endsnippet context "math()" snippet sr "^2" iA ^2 endsnippet context "math()" snippet cb "^3" iA ^3 endsnippet context "math()" snippet td "to the ... power" iA ^{$1}$0 endsnippet context "math()" snippet rd "to the ... power" iA ^{($1)}$0 endsnippet snippet __ "subscript" iA _{$1}$0 endsnippet snippet ooo "\infty" iA \infty endsnippet snippet rij "mrij" i (${1:x}_${2:n})_{${3:$2}\\in${4:\\N}}$0 endsnippet snippet <= "leq" iA \le endsnippet snippet >= "geq" iA \ge endsnippet context "math()" snippet EE "geq" iA \exists endsnippet context "math()" snippet AA "forall" iA \forall endsnippet context "math()" snippet xnn "xn" iA x_{n} endsnippet context "math()" snippet ynn "yn" iA y_{n} endsnippet context "math()" snippet xii "xi" iA x_{i} endsnippet context "math()" snippet yii "yi" iA y_{i} endsnippet context "math()" snippet xjj "xj" iA x_{j} endsnippet context "math()" snippet yjj "yj" iA y_{j} endsnippet context "math()" snippet xp1 "x" iA x_{n+1} endsnippet context "math()" snippet xmm "x" iA x_{m} endsnippet snippet R0+ "R0+" iA \\R_0^+ endsnippet snippet plot "Plot" w \begin{figure}[$1] \centering \begin{tikzpicture} \begin{axis}[ xmin= ${2:-10}, xmax= ${3:10}, ymin= ${4:-10}, ymax = ${5:10}, axis lines = middle, ] \addplot[domain=$2:$3, samples=${6:100}]{$7}; \end{axis} \end{tikzpicture} \caption{$8} \label{${9:$8}} \end{figure} endsnippet snippet nn "Tikz node" w \node[$5] (${1/[^0-9a-zA-Z]//g}${2}) ${3:at (${4:0,0}) }{$${1}$}; $0 endsnippet context "math()" snippet mcal "mathcal" iA \mathcal{$1}$0 endsnippet snippet lll "l" iA \ell endsnippet context "math()" snippet nabl "nabla" iA \nabla endsnippet context "math()" snippet xx "cross" iA \times endsnippet priority 100 snippet ** "cdot" iA \cdot endsnippet context "math()" snippet norm "norm" iA \|$1\|$0 endsnippet priority 100 context "math()" snippet '(?<!\\)(sin|cos|arccot|cot|csc|ln|log|exp|star|perp)' "ln" rwA \\`!p snip.rv = match.group(1)` endsnippet priority 300 context "math()" snippet dint "integral" wA \int_{${1:-\infty}}^{${2:\infty}} ${3:${VISUAL}} $0 endsnippet priority 200 context "math()" snippet '(?<!\\)(arcsin|arccos|arctan|arccot|arccsc|arcsec|pi|zeta|int)' "ln" rwA \\`!p snip.rv = match.group(1)` endsnippet priority 100 context "math()" snippet -> "to" iA \to endsnippet priority 200 context "math()" snippet <-> "leftrightarrow" iA \leftrightarrow endsnippet context "math()" snippet !> "mapsto" iA \mapsto endsnippet context "math()" snippet invs "inverse" iA ^{-1} endsnippet context "math()" snippet compl "complement" iA ^{c} endsnippet context "math()" snippet \\\ "setminus" iA \setminus endsnippet snippet >> ">>" iA \gg endsnippet snippet << "<<" iA \ll endsnippet snippet ~~ "~" iA \sim endsnippet context "math()" snippet set "set" wA \\{$1\\} $0 endsnippet snippet || "mid" iA \mid endsnippet context "math()" snippet cc "subset" Ai \subset endsnippet snippet notin "not in " iA \not\in endsnippet context "math()" snippet inn "in " iA \in endsnippet snippet NN "n" iA \N endsnippet snippet Nn "cap" iA \cap endsnippet snippet UU "cup" iA \cup endsnippet snippet uuu "bigcup" iA \bigcup_{${1:i \in ${2: I}}} $0 endsnippet snippet nnn "bigcap" iA \bigcap_{${1:i \in ${2: I}}} $0 endsnippet snippet OO "emptyset" iA \O endsnippet snippet RR "real" iA \R endsnippet snippet QQ "Q" iA \Q endsnippet snippet ZZ "Z" iA \Z endsnippet snippet <! "normal" iA \triangleleft endsnippet snippet <> "hokje" iA \diamond endsnippet context "math()" snippet '(?<!i)sts' "text subscript" irA _\text{$1} $0 endsnippet context "math()" snippet tt "text" iA \text{$1}$0 endsnippet context "math()" snippet case "cases" wA \begin{cases} $1 \end{cases} endsnippet snippet SI "SI" iA \SI{$1}{$2} endsnippet snippet bigfun "Big function" iA \begin{align*} $1: $2 &\longrightarrow $3 \\\\ $4 &\longmapsto $1($4) = $0 .\end{align*} endsnippet snippet cvec "column vector" iA \begin{pmatrix} ${1:x}_${2:1}\\\\ \vdots\\\\ $1_${2:n} \end{pmatrix} endsnippet priority 10 context "math()" snippet "bar" "bar" riA \overline{$1}$0 endsnippet priority 100 context "math()" snippet "([a-zA-Z])bar" "bar" riA \overline{`!p snip.rv=match.group(1)`} endsnippet priority 10 context "math()" snippet "hat" "hat" riA \hat{$1}$0 endsnippet priority 100 context "math()" snippet "([a-zA-Z])hat" "hat" riA \hat{`!p snip.rv=match.group(1)`} endsnippet snippet letw "let omega" iA Let $\Omega \subset \C$ be open. endsnippet snippet HH "H" iA \mathbb{H} endsnippet snippet DD "D" iA \mathbb{D} endsnippet # vim:ft=snippets