0

在 Vim 中,我想输入...</p>

1x1<TAB>

并将其扩展为……</p>

(r 1)(d 1)(l 1)(u 1)

而对于……</p>

2x4<TAB>

扩展到……</p>

(r 2)(d 4)(l 2)(u 4)

我该怎么做呢?

4

1 回答 1

4

如果您只需要一小部分固定的这些,您可以简单地定义:iabb(尽管它们将扩展为Space,而不是Tab)。或者,有像snipMate这样的插件——它们甚至Tab默认使用扩展。

但是,如果您需要扩展任意数字,则固定方案将不起作用,您必须实现自定义映射,<Tab>以提取光标之前的关键字并将其替换为扩展,如下所示:

:inoremap <Tab> <Tab>$<Esc>:substitute/\<\(\d\+\)x\(\d\+\)\s*\%#/(r \1)(d \2)(l \1)(u \2)/e<CR>0f$s

这会临时插入一个$占位符以恢复替换后的原始光标位置;getpos()你可以用/实现更好的东西setpos()

于 2012-12-28T00:53:18.983 回答