2011-07-23 9 views
2

this vim plugin for coffeescriptを使用しています。または/public/jsのように、コンパイルされたファイルが他の場所にあっても、すべてのソースファイルを/src/に保存します。CoffeeScript vimでBufWritePostを自動作成する方法はありますか?

私は(.vimrcで)以下を使用して現在ディレクトリにVimの自動保存を持つことができます知っている:

autocmd BufWritePost *.coffee silent CoffeeMake! 

しかし、私はファイルごとにそれを変更する方法を見つけ出すことはできません。

:autocmd BufWritePost server.coffee silent CoffeeMake! -o ../server.js 

をしかし、私は(私は私のコーヒーファイルを保存するとき)ことを行うときに何も起こりません:私はこのような何かをしようとしている新しいファイルが作成されず、エラーがスローされません。

(これは右であることにさえ近ければ何の手がかりを)私はこのように、ファイル名のプレースホルダを指定することができなかった場合、私はまた、それをみたい:

:autocmd BufWritePost @%.coffee silent CoffeeMake! -o ../@%.js 

誰も私がこの作品を作るのを助けることができます私が欲しいのは?


EDIT:あなたがルートにそれを望んでいたならば...コーヒーは-o paramは単にディレクトリ(ファイルではなく)ことを期待し、最終的な解決策は

:autocmd BufWritePost *.coffee silent execute 'CoffeeMake! -o '.expand('<afile>:p:h').'/../' 

のようなものでなければなりませんあなたのウェブアプリの

答えて

4

次のコマンドを試してみてください。

:autocmd BufWritePost *.coffee 
\ silent execute 'CoffeeMake! -o '. 
\ expand('<afile>:p:h').'/../'.expand('<afile>:t:r').'js' 

オートコマンドは <afile> CMDLINE-特殊変数を使用して決定することができる一致したファイルの名前。式でその値を抽出するには、 はexpand()関数を使用します。追加修飾子を使用すると、完全な パスを抽出し、ファイル拡張子を削除できます(:help expand()を参照)。あなたは、ファイル、このような構造(または別のディレクトリ名を持つ任意の他の構造体)でアプリをお持ちの場合

+0

あ、いいですね。私はコーヒーパラムを間違って取得しました...私の編集を参照してください。 – neezer

0

app -- 
     coffee -- 
       module1 -- 
          ..files 
       module2 -- 
          ..files 
     js -- 
       module1 -- 
          ..files 
       module2 -- 
          ..files 

はあなたにもこれを検討する必要があります

autocmd BufWritePost,FileWritePost *.coffee silent execute 'CoffeeMake! -o '.expand('%:p:h:s?coffee?js?') 

最後のビットを:s?coffee?js?は、coffeeの最初の出現を保存パスのjsに置き換えます。

詳細情報::help filename-modifiers

関連する問題