jo a před posledním <cr> nemá být mezera, takže tak:
:noremap <silent> <F3> :normal 0yt=<cr>:let @@=string(eval(@@))<cr>:normal f=""p<cr><cr>
ale... nebude tu fungovat s multiplikátorem ani ve visual módu to nepůjde, což jsem nějak nedomyslel, protože obě vlastnosti se použijí pouze pro první :normal .
Takže přece bude potřeba spustit z registru (použiju expression reg):
nnoremap <silent> <F3> @=':normal 0yt=<c-v><cr>:let @@=string(eval(@@))<c-v><cr>:normal f=""pj<c-v><cr>'<cr>
Jen jsem zabalil výraz do @='....' a <cr> jsem nahradil <c-v><cr>. Parser příkazu :map si je převede na znaky ^M, které se jinak vytvoří pomocí CTRL-V a ENTER a šly by také použít místo <c-v><cr>
Tím máme funkční multiplikátor, ale nebude to fungovat pro rozsah označené oblasti, protože @= (obecně spouštění z registru) nepodporuje na vstupu něco jako rozsah '<,'> Musíme tedy namapovat extra vnoremap a použít :normal, což už bylo ukázáno, a není to žádná velká práce.
Stejně jsem tedy skončil u expr. registru, abych měl funkční vše. Jenže v tomto případě, jak jsem psal, kdy potřebujeme zabalit výraz pro spuštění záznamu, má expr. registr opodstatnění. Šlo by to uložit i do obyčejného registru, ale opět bychom narazili na problém, protože spuštění obsahu z registru by bylo až na konci (@a), čímž by nám nefungoval multiplikátor, který se přilepí vždy jen k prvnímu příkazu! Což bychom museli pak řešit proměnnou v:count . Ale to už zacházím do příliš hlubokých vod :)). Ale přesto ukážu analogické řešení k @='...' bez použití expr registru :):
nnoremap <silent> <F3> :<c-u>let @a=':normal 0yt=<c-v><cr>:let @@=string(eval(@@))<c-v><cr>:normal f=""p<c-v><cr>' \| let @b=v:count1 . '@a'<cr>@b
Není toho tam zas o tolik víc, ale s multiplikátorem a proměnnou v: count1 jsou přecejen nějaké ty starosti navíc :).
Jinak, pokud jsem někoho vyděsil, pak to bude asi tím, že všechno systím na řádek. Vytvořením funkce ve skriptu a zavoláním za :map pomocí :call (podporuje rozsah i multiplikátor) se zbavíme mnoha zvláštností. Ne všechno musí být one-liner.
Možná jsem se do toho včera neměl pouštět, je to trochu mimo topic. Ale zas bych nerad zanechal nějaké chyby. Myslím ,že teď už mám zameteno :).