ОП спросил, как разместить скрипт в .vimrc. Это немного сложно из-за странного способа, которым файлы импорта Vim делают продолжение строки. Это было бы что-то вроде этого:
command Typeset call Typeset()
fun Typeset()
let $TYPESET_PATH = expand("%:p")
let $TYPESET_ROOT = expand("%:p:r")
let $TYPESET_DIR = expand("%:p:h")
!sh -icx '
\ cd "${TYPESET_DIR}"
\; lilypondPDFoutput="${TYPESET_ROOT}.pdf"
\; /Applications/Lilypond.app/Contents/Resources/bin/lilypond -dno-point-and-click "$TYPESET_PATH"
\; wait
\; open "${lilypondPDFoutput}"
\'
endfun
Вот что на самом деле сейчас работает для меня в совершенно другой среде (Lilypond / Win32; Vim для Cygwin).
" Quick compile command for Lilypond.
command Typeset call Typeset()
fun Typeset()
let $TS_NAME = expand("%:t")
let $TS_DIR = expand("%:p:h")
let $TS_PDF = expand("%:t:r") . ".pdf"
!sh -icx ' cd "${TS_DIR}" && lilypond "${TS_NAME}" && cygstart "${TS_PDF}" '
endfun
Примечания: Lilypond / Win32 не понимает пути косой черты. Поэтому я исключил путь в его аргументации. Вы могли бы сделать то же самое. Вы уже установили путь с помощью "CD". Также для моей среды я убрал опцию «указать и щелкнуть», а также «ждать» и изменил «открыть» на «cygstart». В этот момент оболочка была достаточно короткой, и мне не нужно было довольно загадочное продолжение линии, требуемое Vim. В то же время я добавил операторы быстрого доступа, чтобы ошибка на любом этапе могла остановить процесс.