假设我有以下代码段:
snippet divt
<div id="${1:div_id}">
${2:'some text'}
</div>
因此,当我输入divt并点击Tab两次时,“'some text'”应该被选中,当我再次点击tab时,我希望选择“some text”(单引号)。我该怎么办?
编辑1:谢谢你的回答。可能这个例子更有意义:
snippet divt <div ${1:id="${2:div_id}"}> </div>
有时我想要一个没有id的div,所以我需要能够完全删除id =“div_id”。有时我想拥有一个id,所以我只能更改div_id部分。
答案 0 :(得分:1)
SnipMate不支持嵌套占位符,但根据@Benoit的建议,您可以在编辑第二个占位符时使用另一个代码段。不过,一定要带上陀螺。
我不确定你想要用some text
vs 'some text'
实现什么 - 在这个上下文中,每个html解析器都被完全相同的处理 - 但是我会用简单
snippet div
<div id="${1:div_id}">
${2}
</div>
只需输入
即可some text
或
'
将扩展为(|
是插入符号)
'|'
感谢delimitMate或任何其他类似的插件
'some text'
或者可以使用环绕声进行更改
some text|
到
'some text'
输入
<Esc>v2bS'
使用Surround,您也可以从
开始some text
用
选择它v2e
或类似的东西并输入
S'
添加引号,然后选择
行V
并输入
S<div id="div_id">
获取
<div id="div_id">
'some text'
</div>
或者以其他方式做或者...有人必须写一篇博文,其中包含了在Vim中实现给定任务的所有可能方法。
答案 1 :(得分:1)
我目前正在进行UltiSnips的推广之旅。 UltiSnips的片段看起来像这样:
snippet divt "div" b
<div ${1:id="${2:div_id}"}>
</div>
endsnippet
UltiSnips还附带了snipMate片段的转换器脚本,因此切换应该是无痛的。