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 に答える