Вы можете запускать произвольные команды оболочки в vim, используя автокоманду BufWrite
:
Например, укажите это в вашем ~/.vimrc
:
au BufWrite *.hs !echo % >> ~/saves.txt
Это будет запускаться echo <CURRENT FILENAME> >> ~/saves.txt
каждый раз, когда вы сохраняете файл haskell.
Так что это простой способ запуска внешних скриптов.
Теперь вы можете написать несколько iterm скриптов для передачи команд на другие ваши терминалы. Что-то вроде:
tell my_ghci_terminal
write text ":r\n"
end tell
tell my_hlint_terminal
write text "<RUN HLINT ON WHATEVER>"
end tell
Таким образом, вы можете использовать автокоманду vim для запуска соответствующего сценария iterm (передавая текущее имя файла, чтобы сценарий мог указать ghci и hlint, какой файл обрабатывать).
Возможно, вы захотите включать и выключать это (вы, возможно, не захотите делать это для КАЖДОГО файла haskell), так что подумайте об обёртывании функциональности в функцию vim, которая позволяет вам ее переключать (а также устанавливать аргументы для как iterm должен найти ваши терминалы ghci и hlint).