Запустить скрипт оболочки из Vim с открытым в данный момент файлом в качестве аргумента - PullRequest
2 голосов
/ 24 октября 2011

Я только начал использовать Vim.

Вот сценарий оболочки, который я часто использую из BBedit .

#!/bin/sh

filename=$(basename "${BB_DOC_PATH##*/}" .ly)
directory=${BB_DOC_PATH%/*}/

cd "${directory}"

lilypondPDFoutput="${directory}"$filename".pdf"

/Applications/Lilypond.app/Contents/Resources/bin/  lilypond -dno-point-and-click -ddelete-intermediate-    files "$BB_DOC_PATH"

wait

open "${lilypondPDFoutput}"

BB_DOC_PATH - это переменная, котораяпредставляет путь к текущему открытому файлу.(например, /Users/me/Documents/file.ly)

Как мне разместить этот скрипт в моем .vimrc и вызвать его с помощью простой команды, такой как :typeset?

Примечание: я набираю Лилипонд файл.

Ответы [ 2 ]

5 голосов
/ 24 октября 2011

Вы можете использовать что-то вроде:

:!your_script %

Если у вас есть переменная your_script в PATH, она должна работать нормально. См. :! и модификаторы файлов для документов.

1 голос
/ 24 октября 2011

ОП спросил, как разместить скрипт в .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. В то же время я добавил операторы быстрого доступа, чтобы ошибка на любом этапе могла остановить процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...