2

我刚开始使用 Vim。

这是我在BBedit中经常使用的 shell 脚本。

#!/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

注意:我正在排版一个Lilypond文件。

4

2 回答 2

5

你可以使用类似的东西:

:!your_script %

如果您在 PATH 中有 your_script 它应该可以正常工作。见:!和文档的文件修饰符

于 2011-10-24T17:09:26.230 回答
1

OP询问如何将脚本放在.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;Cygwin 的 Vim)。

" 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 要求的相当神秘的线延续。同时我添加了快捷操作符,以便任何阶段的错误都会停止该过程。

于 2011-10-24T18:35:42.927 回答