1

假设我有以下代码段:

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 部分。

4

2 回答 2

1

我目前正在为我正在维护的UltiSnips进行促销旅行。UltiSnips 的代码片段看起来像这样:

snippet divt "div" b
<div ${1:id="${2:div_id}"}>
</div>
endsnippet

UltiSnips 还附带了一个用于 snipMate 片段的转换器脚本,因此切换应该很轻松。

于 2011-07-27T05:40:58.693 回答
1

不幸的是,SnipMate 不支持嵌套占位符,但根据@Benoit 的建议,您可以在编辑第二个占位符时使用另一个片段。不过,请务必随身携带陀螺。

我不确定你想用some textvs实现什么'some text'——在这种情况下,地球上的每个 html 解析器都以完全相同的方式对待它们——但我会用一个简单的方法来实现

snippet div
    <div id="${1:div_id}">
        ${2}
    </div>

只需键入

some text

或者

'

这将扩展为 (|是插入符号)

'|'

感谢 delimitMate 或任何其他类似的插件

'some text'

或者也许使用环绕来改变

some text|

进入

'some text'

通过键入

<Esc>v2bS'

使用环绕声,您还可以从

some text

选择它

v2e

或类似的东西并输入

S'

添加引号,然后选择行

V

并输入

S<div id="div_id">

获得

<div id="div_id">
    'some text'
</div>

或者以其他方式做,或者......有人必须写一篇博客文章,其中包含在 Vim 中完成给定任务的所有可能方法。

于 2011-06-01T16:10:19.663 回答