Аппликативный . Pointfree . Оригами . Аккуратно.
Наслаждайтесь:
import Data.List
import Data.Tuple
import Data.Bool
import Control.Applicative
digits = unfoldr $ liftA2 (bool Nothing) (Just . swap . (`divMod` 10)) (> 0)
TL; DR: да. Вы, вероятно, должны использовать
exec "!git_difftool " . l:left_sha . " " . l:right_sha
Команды Bang передадут все после них на терминал, не касаясь vim (поскольку команды оболочки не используют синтаксис vim). Чтобы получить интерпретацию переменных, создайте команду exec для создания команды bang.
Редактировать:
Если вам нужно, чтобы он молчал, просто добавьте строку с silent