Next: , Previous: , Up: ファイルの処理   [Contents][Index]


19.7 ファイルのエイリアス

シンボリックリンクとハードリンクは、同じファイルを参照するためにいくつかの名前を使うことを可能にします。ハードリンクは、ファイルを直接参照する他の名前です。それらすべての名前は同じように有効で、それらの間に優先順位はありません。対照的にシンボリックリンクは、ある種の定義されたエイリアス(別名)です。foobarへのシンボリックリンクの場合、そのファイルをどちらの名前でも参照できますが、barが実際の名前で、fooはエイリアスに過ぎません。シンボリックリンクがディレクトリーを指すときは、さらに複雑なケースが発生します。

Emacsがすでに異なる名前でvisitしている場合、通常はエコーエリアにメッセージを表示して、そのファイルをvisitしている既存のバッファーを使います。これはハードリンクおよびシンボリックリンクをサポートしているシステム、または長いファイル名を切り詰めるシステムで長い名前のファイルを使っている場合、またはファイル名の大文字小文字を区別しないシステムで発生します。変数find-file-suppress-same-file-warningsを非nil値にセットすることにより、メッセージを表示しないようにできます。変数find-file-existing-other-namenilにセットすれば、この機能全体を無効にできます。その場合、同じファイルを異なる名前でvisitすると、それぞれのファイル名で別々のバッファーが使われます。

変数find-file-visit-truenameが非nilの場合、バッファー用に記録されるファイル名は、指定した名前ではなく、ファイルの本当の名前(これはすべてのシンボリックリンクを対象の名前で置き換えて作られます)が使われます。find-file-visit-truenameをセットするは、find-file-existing-other-nameにも暗に影響します。

シンボリックリンクを通じてアクセスされるようなディレクトリーにたいしては通常、優先的にリンクされた名前をEmacsに表示させたいときがあります。これを行うにはdirectory-abbrev-alistをカスタマイズします。このリストの各要素は(from . to)という書式です。これはディレクトリー名にfromが出現したときは常に、fromtoで置き換えることを意味します。文字列fromは正規表現です(正規表現の構文を参照してください)。正規表現はディレクトリー名の最初の文字にマッチさせる必要があるので、‘\`’で始まります(埋め込みの改行をサポートするディレクトリー名の場合は、‘^’で無効にします)。toには同じディレクトリーを指す、絶対パスによる普通のディレクトリー名を指定する必要があります。文字列toでホームディレクトリーを指定するのに、‘~’を使用しないでください。Emacsはこれらの変換を個別に行います。以下は通常シンボリックリンク/fsfでアクセスされる、/home/fsfを指定する例です:

(("\\`/home/fsf" . "/fsf"))