我刚刚开始使用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文件。
答案 0 :(得分:5)
答案 1 :(得分: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; Vim for 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要求的相当神秘的线延续。同时我添加了快捷操作符,以便任何阶段的错误都会停止该过程。