Es gibt keine funktionsähnlichen mode()
oder speziellen v:macro_running
Variablen, und viele würden argumentieren, dass diese nur schlechte Praktiken fördern würden.
Sie können das Verhalten von verwenden feedkeys()
, dessen übergebene Schlüssel normalerweise direkt nach dem Befehl / Mapping ausgeführt werden, jedoch nur am Ende der Makroausführung. Wenn Sie Ihre lang laufenden Befehle dort einfügen, werden sie normale Befehle direkt verlangsamen, jedoch nur (kumulativ) nach der Makroausführung (und Sie können dies normalerweise mit abbrechen <C-C>
).
Beispiel
let @q = ',a,b'
Anstatt:
nnoremap ,a aHello<Esc>2gs nnoremap ,b aWorld<Esc>2gs
benutzen
nnoremap ,a aHello<Esc>:call feedkeys('2gs', 'n')<CR> nnoremap ,b aWorld<Esc>:call feedkeys('2gs', 'n')<CR>
Dadurch wird der gesamte HelloWorld
Text sofort in ein Makro eingefügt.