2

Vim でスリムなファイルを作成していますが、保存するときにそれらをコンパイルして html ファイルとして保存する必要があります。これを .vimrc に追加すると、現在のディレクトリ内のファイルに対して発生します。

au BufWritePost *.slim silent !slimrb % > $(echo % | cut -d'.' -f1).html

../file.slimのようなパス を持つファイルでは機能しません./file.slim

パラメータ展開を使用する必要がありますが、Vim で外部コマンドを実行するときに % 文字が現在のファイルパス用に予約されています。

ファイルのディレクトリに関係なく、slim ファイルをコンパイルして html ファイルに保存するにはどうすればよいですか?

4

2 に答える 2

2
au BufWritePost *.slim :silent call system('slimrb '.shellescape(expand('%')).' > '.shellescape(expand('%:r').'.html'))

. 特殊文字を含まないファイル名を持つ gvim では、これは と同じようsilent !slimrb % > %:r.htmlに機能しますが、ターミナル vim では画面を空白にせず (silentこれを妨げません)、ファイル名に改行以外の特殊文字が含まれている場合に機能します。改行を処理するには、次を使用する必要があります。

au BufWritePost *.slim :execute 'silent !slimrb' shellescape(@%, 1) '>' shellescape(expand('%:r').'.html', 1) | redraw!

またはカスタムshellescape関数を記述します。

于 2012-10-16T14:37:01.613 に答える
1

を使用して Vim の拡張機能をトリミングできることに気付きました%:r。使用するhtmlファイルとしてスリムファイルを自動コンパイルして保存するには

au BufWritePost *.slim silent !slimrb % > %:r.html

于 2012-09-09T21:55:22.890 に答える