Как еще одно предложение (хотя и немного другое) с использованием встроенной функциональности vim:
:iabbrev def def(): #<LEFT><LEFT><LEFT><LEFT><LEFT>
Теперь всякий раз, когда вы набираете def с последующим пробелом или другим несловарным символом, он расширяется до того же значения, которое вы указали в качестве результата SnippetsEmu (пробел приходит из пробела, который вы ввели, чтобы вызвать завершение) ,
При таком подходе не возникает проблема "задержки", с которой вы столкнулись при использовании: inoremap, и она встроена в vim. Для получения дополнительной информации об этой функции, смотрите :help abbrev
.
Вы можете быть обеспокоены тем, что, будучи вызванным пробелом, а не символом табуляции, он сработает излишне, но в целом vim довольно сообразителен, когда его запускать. Проблема может быть дополнительно устранена путем включения сокращения только для определенных типов файлов (например, python):
au filetype python :iabbrev ... etc
Snip [ets] (Manager | Emu | Mate | .vim), конечно, также является идеальным решением, но приятно знать об альтернативах (особенно когда они встроены).