Emacsには、VCディレクトリバッファの移動、ファイルを現在のVCファイルセットに属するものとしてマークする操作、およびVCファイルセットを操作するためのコマンドがいくつか用意されています。
ポインタを次のエントリ (vc-dir-next-line) に移動します。
ポイントを前のエントリ (vc-dir-previous-line) に移動します。
次のディレクトリエントリ (vc-dir-next-directory) に移動します。
直前のディレクトリエントリ (vc-dir-previous-directory) に移動します。
現在の行にリストされているファイルまたはディレクトリにアクセスします (vc-dir-find-file)。
現在の行にあるファイルまたはディレクトリに、別ウィンドウでアクセスします (vc-dir-find-file-other-window)。
現在の行にあるファイルまたはディレクトリ(vc-dir-mark)にマークを付け、現在のVCファイルセットに追加します。リージョンがアクティブな場合は、そのリージョン内のすべてのファイルにマークを付けます。
ファイルが既にマーク済みのディレクトリ、またはそのサブディレクトリ内にある場合、このコマンドでそのファイルをマークすることはできません。同様に、ディレクトリ内のファイルのいずれかがマークされている場合、このコマンドでそのディレクトリをマークすることはできません。
ポイントがファイルエントリ上にある場合は、同じステータスを持つすべてのファイルにマークを付けます。ポイントがディレクトリエントリ上にある場合は、そのディレクトリの直下の子孫(すなわち子)であるファイルのみ(vc-dir-mark-all-files)にマークを付けます。接頭辞引数が指定されている場合は、リストされたすべてのファイルにマークを付けます。
このコマンドを使用すると、正規表現 (vc-dir-mark-by-regexp)
でファイルをマークできます。プレフィックスを指定すると、代わりにファイルのマークを解除します。
このコマンドを使用すると、「編集済み」「追加済み」「削除済み」など、登録済みの状態のいずれかにあるファイルをマークできます。(vc-dir-mark-registered-files)。
point 配下のファイルを、VC が無視すべきファイルリスト (vc-dir-ignore)
に追加します。例えば、VC が Git の場合、このファイルを .gitignore
ファイルに追記します。プレフィックスが指定されている場合は、マークされたすべてのファイルに対してこの処理を行います。
現在のファイルセットに対して行ったすべての変更を破棄します (vc-revert)。
VCディレクトリバッファ(vc-dir-root-next-action)に表示されているすべてのファイルに対して、次に論理的なバージョン管理操作を行います。これはC-x v v(バージョン管理下の基本編集を参照)と同様ですが、マークやポイントの位置を無視する点が異なります。
現在の行にあるファイルまたはディレクトリのマークを解除します。リージョンが有効な場合は、そのリージョン内のすべてのファイルのマークを解除します
(vc-dir-unmark)。
ポイントがファイルエントリ上にある場合は、同じステータスを持つすべてのファイルのマークを解除します。ポイントがディレクトリエントリ上にある場合は、そのディレクトリの直下の子孫(すなわち子)であるファイル(vc-dir-unmark-all-files)のみのマークを解除します。接頭辞引数が指定された場合は、リストされたすべてのファイルおよびディレクトリのマークを解除します。
変数 vc-dir-simple-unmark-all-files を nil
以外の値に設定することで、このコマンドの接頭辞引数の意味を反転させることができます。このとき、接頭辞引数なしの U はすべてのファイルのマークを解除し、C-u U
は現在のファイルと同じステータスを持つファイル、またはディレクトリの直下の子孫ファイルのみのマークを解除します。
ステータス ‘up-to-date’ または ‘ignored’ (vc-dir-hide-up-to-date)
のファイルを非表示にします。接頭辞引数を指定すると、ポイント位置にある項目と同じステータスの項目を非表示にします。
VCディレクトリバッファの表示を更新する (revert-buffer)。
VCディレクトリバッファを終了し、破棄する (quit-window)。
VCディレクトリバッファ内では、m (vc-dir-mark) または M (vc-dir-mark-all-files)
でマークしたすべてのファイルが、現在のVCファイルセットに含まれます。ディレクトリエントリを m
でマークすると、そのディレクトリツリー内にリストされているすべてのファイル(すなわち、そのディレクトリのリスト済みファイルだけでなく、そのサブディレクトリのリスト済みファイルも)が現在のVCファイルセットに含まれます。現在のVCファイルセットに属するファイルおよびディレクトリは、VCディレクトリバッファ内のVCステータスの横に
‘*’ 文字で表示されます。これにより、C-x v v(バージョン管理における基本編集を参照)、C-x v =(古いリビジョンの確認と比較を参照)、および C-x v u(バージョン管理操作の取り消しを参照)といったVCコマンドで操作対象となる、複数ファイルからなるVCファイルセットを設定できます。
マークされたファイルやディレクトリエントリが含まれないVCディレクトリバッファにおいて、現在のVCファイルセットは次のように決定されます。ポイントがファイルエントリ上にある場合、ファイルセットはそのファイルのみで構成されます。ポイントがディレクトリエントリ上にある場合、ファイルセットはそのディレクトリツリー内のすべてのファイルで構成されます。したがって、ポイントが(作業ディレクトリを表す)エントリ ‘./’ 上(またはそれより上)にある場合、ファイルセットはリストされているすべてのファイルで構成されます。
VCディレクトリバッファでは、C-x v プレフィックスを持つVCコマンド用のシングルキーショートカットもいくつか定義されています:=、+、l、i、D、L、G、I、O、およびv。
例えば、VCディレクトリバッファを開き、‘edited’ステータスでファイルが一覧表示されている状態でファイルを選択し、v または C-x v v (vc-next-action)
と入力することで、編集した一連のファイルをコミットできます。バージョン管理システムがチェンジセットベースの場合、Emacsはこれらのファイルを単一のリビジョンとしてコミットします。
VCディレクトリバッファ内では、以下のコマンドを使用して、現在のVCファイルセットに対して検索・置換を行うこともできます。
ファイルセット (vc-dir-search) を検索します。
ファイルセット (vc-dir-query-replace-regexp)
に対して正規表現クエリによる置換を行います。
ファイルセット (vc-dir-isearch) に対して増分検索を行う。
ファイルセット (vc-dir-isearch-regexp) に対して増分正規表現検索を行う。
複数のファイルに対して操作を行う点を除けば、これらのコマンドはシングルバッファ版とほぼ同様に動作します(検索と置換を参照)。
VC Directoryバッファでは、さらに接頭辞 b で始まるブランチ関連のコマンドがいくつか定義されています:
新しいブランチを作成します (vc-create-branch)。新しいブランチの作成を参照してください。
ブランチ名のプロンプトを表示し、そのブランチの変更履歴を表示する (vc-print-root-branch-log)。
ブランチに切り替えます (vc-switch-branch)。ブランチの切り替えを参照してください。
マークされたファイル、またはマークがない場合は現在のファイル(vc-dir-delete-file))を削除します。ファイルが登録されている場合、バージョン管理システム上で削除済みとしてマークされます。
上記のコマンドは、メニューバーや、mouse-2 で呼び出されるコンテキストメニューからも利用可能です。さらに、一部の VC バックエンドでは、メニューを通じてバックエンド固有の追加コマンドを提供しています。例えば、Git や Bazaar では、スタッシュ や シェルフ(未コミットの変更を一時的に退避させ、後で復元するための仕組み)を操作できます。