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} ewcommand{incfig}[1]{% defsvgwidth{columnwidth} import{./figures/}{#1.pdf_tex} } pdfsuppresswarningpagegroup=1 egin{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 egin{table}[${1:htpb}] centering caption{${2:caption}} label{tab:${3:label}} egin{tabular}{${5:c}} $0${5/((?<=.)c|l|r)|./(?1: & )/g} end{tabular} end{table} endsnippet snippet fig "Figure environment" b egin{figure}[${1:htpb}] centering ${2:includegraphics[width=0.8 extwidth]{$3}} caption{${4:$3}} label{fig:${5:${3/W+/-/g}}} end{figure} endsnippet snippet enum "Enumerate" bA egin{enumerate} item $0 end{enumerate} endsnippet snippet item "Itemize" bA egin{itemize} item $0 end{itemize} endsnippet snippet desc "Description" b egin{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 egin{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])_(dd)' "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 eq endsnippet context "math()" snippet ceil "ceil" iA leftlceil $1 ight ceil $0 endsnippet context "math()" snippet floor "floor" iA leftlfloor $1 ight floor$0 endsnippet snippet pmat "pmat" iA egin{pmatrix} $1 end{pmatrix} $0 endsnippet snippet bmat "bmat" iA egin{bmatrix} $1 end{bmatrix} $0 endsnippet context "math()" snippet () "left( right)" iA left( ${1:${VISUAL}} ight) $0 endsnippet snippet lr "left( right)" i left( ${1:${VISUAL}} ight) $0 endsnippet snippet lr( "left( right)" i left( ${1:${VISUAL}} ight) $0 endsnippet snippet lr| "left| right|" i left| ${1:${VISUAL}} ight| $0 endsnippet snippet lr{ "left{ right}" i left\{ ${1:${VISUAL}} ight\} $0 endsnippet snippet lrb "left{ right}" i left\{ ${1:${VISUAL}} ight\} $0 endsnippet snippet lr[ "left[ right]" i left[ ${1:${VISUAL}} ight] $0 endsnippet snippet lra "leftangle rightangle" iA left<${1:${VISUAL}} ight>$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} o ${2:infty}} endsnippet snippet limsup "limsup" w limsup_{${1:n} o ${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 egin{figure}[$1] centering egin{tikzpicture} egin{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 ode[$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 abla endsnippet context "math()" snippet xx "cross" iA imes 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 o 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 notin 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 igcup_{${1:i in ${2: I}}} $0 endsnippet snippet nnn "bigcap" iA igcap_{${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 endsnippet snippet <! "normal" iA riangleleft endsnippet snippet <> "hokje" iA diamond endsnippet context "math()" snippet '(?<!i)sts' "text subscript" irA _ ext{$1} $0 endsnippet context "math()" snippet tt "text" iA ext{$1}$0 endsnippet context "math()" snippet case "cases" wA egin{cases} $1 end{cases} endsnippet snippet SI "SI" iA SI{$1}{$2} endsnippet snippet bigfun "Big function" iA egin{align*} $1: $2 &longrightarrow $3 \\ $4 &longmapsto $1($4) = $0 .end{align*} endsnippet snippet cvec "column vector" iA egin{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