I prefer using Vim in a terminal. I can switch to the shell with Ctrl-Z and back with fg. However it is hard to integrate a terminal command with other GUI tools, such as editing a file in Vim from Finder.

In macOS, the default Terminal app and iTerm both supports automation. It's easy to write a script to open a new terminal window and run a command like “vim file” in it. But I want to close the window after Vim quits. A quick work around is running the following command:

vim file; exit 0

Now the problem is that if I suspend Vim via Ctrl-Z, the terminal window is closed, because shell will continue to execute the next command when the process is suspended.

After research and reading a StackOverflow answer, I wrote two scripts to launch Vim in iTerm. I also added features in iterm-vim-wrapper to edit clipboard and empty scratch file in temporary directory.

This is an example which uses the scripts to create File Action in Alfred.