Если вы можете работать с gVim или MacVim, вы можете использовать флаг -f
:
-f or --nofork Foreground: Don't fork when starting GUI
, что заставит ваш код Ruby приостанавливаться во время работы приложения (gvim или MacVim).
Захват содержимого редактора немного сложнее, но легко обрабатывается вашим кодом, предварительно создающим временный файл в виде заглушки и передающим его в Vim при его запуске. Отредактируйте, сохраните буфер, затем выйдите из редактора. Когда управление вернется в Ruby, снова откройте файл и прочитайте его содержимое в переменную.
Вы заметите, что это происходит в Linux, если вы установите для переменной EDITOR
вашей среды значение vim и отредактируете командную строку или скажете SVN использовать ее для своей команды svn diff
.