2

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ですか?

注:私は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 に答える