2011-10-21 10 views
6

私は現在MacVimを使用していますので、作業中のツリーのすべてのファイルを出力したいと思います。単純にこれを行う方法はありますか?hardcopyコマンドを使用していますか?Vimからすべてのファイルを再帰的に印刷します

+0

':qa'は、開いているすべてのファイルを閉じますA'を変更することができます'場合...私は疑問に思います? –

答えて

6

ファイルのグループのためのコマンドを実行するための便利な方法は、その名前の リストを収集としてそれを定義することです新しい引数リスト(:help arglistを参照)、 を実行し、引数リスト内のそのファイルに対してコマンドを反復処理します。

  1. 所望のファイルにマッチするワイルドカード と:argsコマンドを使用し、最初の手順を実行します。例えば、

    :args ./**/* 
    

    は現在 ディレクトリとそのサブディレクトリ内のすべてのファイルの名前に引数リストを設定します。同様に、

    :args /tmp/**/*.{c,h} 
    

    /tmpとそのサブディレクトリ内のすべての.c.hファイルを選択します。ワイルドカード構文の詳細については については、:help wildcardを参照してください。

    印刷にファイルを含むサブツリーのルートへのパスが事前に を未知であり、スクリプトによって構築されている場合は、変数pはその のパス名を含むようになっているコマンド

    :exe 'args' join(map(split(glob(p . '/**/*'), '\n'), 'fnameescape(v:val)')) 
    

    を使用ルートディレクトリ。プリンタへ引数リスト内のファイルを送信するために

  2. :argdoコマンドを使用して、それらのファイルに対して :hardcopyコマンドを実行し、

    :argdo hardcopy! 
    

    !指定子は、印刷 パラメータを選択するためのモーダルダイアログを抑制します。

    さらに複雑なコマンドを使用して、 ファイルと同じディレクトリにある別のPostScriptドキュメントを に各ファイルを印刷することができます。

    :argdo hardcopy! >%:p.ps 
    

    ここで印刷されたファイルの名前は、(:help cmdline-specialを参照)、対応するPostScriptファイルの名前を取得する.ps接尾 と連結しています。

    :argdo -argumentコマンドをスピードアップするために、Vimはeventignoreリストに追加することで Syntaxオートコマンドイベントを無視します。 これは:hardcopyコマンドは:argdo NEである前にSyntax自動コマンドは、引数リスト内のファイル のために実行されていない場合、 対応する印刷された文書は(printoptionsに設定syntax:yの場合) をシンタックスハイライトを持っていないことを意味します。引数リストのすべてのファイルに対してSyntax の自動コマンドを実行するには、まず次のように コマンドを使用します。印刷と同じランでこれを行うには

    :argdo set ei-=Syntax | do Syntax 
    

    、コマンドを連結:

    :argdo set ei-=Syntax | do Syntax | hardcopy! >%:p.ps 
    
+0

いつものように、ずっと徹底的に – sehe

+0

お返事ありがとうございます。これは機能します。 –

+0

@ b。これについての質問をフォローアップしてください。私は、このコマンドを使用すると構文の強調表示が機能しないようです。私が知ることから、それは最初のものではありますが、次のものはPostScriptには印刷されません。それはなぜですか? –

3

編集申し訳ありませんが、私は以前誤解されていました。

すべてを印刷するには、作業ディレクトリにPHPとC#のファイルを言う:

:args ./*.{cs,php} **/*.{cs,php} 
:argdo ha 
+0

単純に ':args **/*。{cs、php}'はIIRCを実行します。 – fachexot

関連する問題