Настройка Vim для Python

Мне очень нравится редактор Emacs для Python, потому что это умное табулирование, например, если у меня есть что-то вроде этого

def foo():
    if bar:
         blah
         [b]eep

и я нажимаю кнопку tab на курсоре (который находится на b звукового сигнала), он не будет вставлять новую вкладку, вызывающую синтаксическую ошибку, но будет переключаться между возможными уровнями, на которых может звучать звуковой сигнал. Есть ли способ получить этот эффект на Vim?