2

現在、次のマッピングを使用して、基本的に、スクリプトを実行して、開発環境に書き込まれたファイルをローカルサーバーにコピーしています。個々のファイルに対しては正常に機能します。ただし、開いているすべてのバッファーを保存するために :wa を実行する習慣があります。

au BufWritePost /path/to/dev/* silent !$HOME/bin/somescript.sh %:p 

これを次のような条件付きに書き換える方法についての提案:

if one file
  exec script to copy just that file # like I already have
if :wa
  # here I'd probably exec a script to just copy recursively

編集

ZyX のソリューションごとの可能な解決策:

au BufWritePost /Users/rlevin/programming/sugar/Mango/sidecar/* silent !$HOME/bin/sugarbuild.sh %:p

" If we do :wa<CR> we check if command type is ':' and if command itself was
" 'wa'. If so, we call the command WA which calls BuildSidecarIfInProject.
" This checks if we're actually within the project's directory
cnoreabbrev <expr> wa ((getcmdtype() is# ':' && getcmdline() is# 'wa')?('WA'):('wa'))
command! WA :call BuildSidecarIfInProject()
function! BuildSidecarIfInProject()
  if fnamemodify('.', ':p')[:44] is# '/Users/rlevin/programming/sugar/Mango/sidecar'
    exec ":!$HOME/bin/toffeebuild.sh"
  endif                                                                                                                                                                        
endfunction
4

2 に答える 2

2

保存されたファイルの数を判別する方法はありませんが、waを再マップ/省略できます。

command WA # command that executes a script to just copy recursively
cnoreabbrev <expr> wa ((getcmdtype() is# ':' && getcmdline() is# 'wa')?('WA'):('wa'))
于 2012-04-20T06:35:41.533 に答える
2

「時期尚早の最適化は諸悪の根源だサーバーへのオンザフライのバックアップ/展開が本当に必要な場合は、毎回再帰バージョンを実行するか、ホットキーにバインドしてみませんか? つまり、単一ファイルのケースを特別に扱わないでください。たとえば、rsync不必要なコピーを避けるのは得意です。

于 2012-04-20T06:44:47.793 に答える