UltiSnips 使用

文档资料在 https://github.com/SirVer/ultisnips.git 这个仓库的 doc 目录下.
也可在 sirver 的个人博客查看.
在 snippet 时,用 " 来注释。

可以使用 $1 等特殊变量来标识光标的位置:

1
2
3
4
snippets t "A simple HTML text"
<$1>
Hello World
</$1>

比如这一段,当你展开这个 snippets 的时候,光标位于 $1 处,然后你编辑内容时,另一个 $1 也会被编辑.

另一段, 多了一个 {}:

1
2
3
4
snippets t "A simple HTML text"
<${1:div}>
Hello World
</$1>

这会使光标选中这个文本 div.

第三个例子, 在 snippets 这一行后面加上一个 b, 即 begin, 表示只有在行首时在用 tab 直接展开:

1
2
3
4
snippets t "A simple HTML text" b
<${1:div}>
Hello World
</$1>

第四个例子,可以使用正则表达式的替换功能:

1
2
3
4
snippets t "A simple HTML text" b
<${1:div}>
Hello World
</${1/(\w+).*/$1/}>

这里 { 后面的 1 仍然是光标的位置,最后一排的第二个 $1 表示在第一出光标处被选中的文本,也就是这里的 div.

使用 `` 包裹起来的部分可以直接写脚本,如 Shell Script, Vimsript, Perl, Python. 语法如下:

  • Shell : `echo hi` or `#! /usr/bin/perl
    print “Hello”`
  • Vimscript : `!v “1 + 2” . string(1+2)`, 也就是前面有一个 !v
  • Python : `!p snip.rc = “Hello”`, 前面有个 !p

Inword triggers

在 snippet 那一行加上 i, 表示将一个单词扩展开:

1
2
3
snippet ri "rizer" i
rizer
endsnippet

这里, 你输入 ri 然后 tab 就会扩展成 rizer.

Regular Expression triggers

在 snippet 那一行加上 rb , 用于扩展的关键词可以用正则表达式来表示:

1
2
3
4
5
snippet "chap?t?e?r?" "Latex chapter" rb
\section{chapter}
$0
\end{chapter}
endsnippet

Visual 新特性的使用

${VISUAL} 就是这个变量, 使用你用于扩展的键, 在 visual 模式下剪切文本, 会保存在这里.

关于使用 Python

snip.rv 的作用是将返回值替代文本.

关于 global

位于:

1
2
global TYPE
endglobal

之间的应用于所有后面的类型.

如:

1
2
global !p
endglobal

这就是应用于 python.


UltiSnips 使用
http://example.com/2022/09/06/UltiSnips-使用/
作者
Jie
发布于
2022年9月6日
许可协议