在Vim中,我想输入...
1x1<TAB>
并将其扩展为......
(r 1)(d 1)(l 1)(u 1)
和...
2x4<TAB>
扩展为......
(r 2)(d 4)(l 2)(u 4)
我该如何做到这一点?
答案 0 :(得分: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()
实现更好的效果。