某些情况下,自动展开代码块功能无法触发.
在一个 a.html 文件里面试验:
<tr>td</tr> #在 td 后面按 tab 可以补全
<tr>right</tr> #在 right 后面按 tab 不可以补全
<tr> right</tr> #在 right 前面加一个空格,之后再在 right 后 按 tab 可以补全.
1
yangyanggnu 2015-10-29 12:51:39 +08:00 1
在定义结对符模板时,你应该考虑加上模板控制参数 i 。默认情况下, UltiSnips 只会当模板名前是空白字符或行首时才进行模板补全,比如,定义 () 的模板如下:
snippet b "bracket" (${1})${2} endsnippet 我要调用函数 printf(),在输入完 printf 后应该接着输入括号模板名 b ,然后输入模板展开快捷键 <leader><tab>,你会发现 UltiSnips 无法帮你补全模板,因为它看到的不是 b 而是 printfb ,这在模板文件中根本未定义。有一种间接解决方式是在 printf 后加个空格,再输入 b<leader><tab> 进行补全,这就成了 printf (),不喜欢这种编码风格。其实, UltiSnips 的作者也注意到这个问题了,他让你可以通过前面提过的模板控制参数 i 进行解决。重新定义 () 的模板如下: snippet b "bracket" i (${1})${2} endsnippet 这样, UltiSnips 只管光标前 1 个字符是否是 b ,若是则补全 (),不论 b 前是否有其他字符。类似,其他结对符模板都按此加上 i 控制参数。 |
2
tracyone 2015-10-29 12:54:26 +08:00 via Android
换一个快捷键?我默认都是用 CTRL 加 j ,来触发的。
|
3
cxh116 OP @yangyanggnu 谢谢,加了 i 选项可以用了,用的是 https://github.com/honza/vim-snippets ,eruby 某些地方不在 i 选项太不好用了.
@tracyone 已经是 ctrl+j 了 |