Next: , Up: Files   [Contents][Index]


18.1 ファイルの名前

ファイルを操作するEmacsコマンドの多くは、ミニバッファー(Minibuffer Fileを)を使って、ファイル名の指定を求めます。

ミニバッファーでは、通常の補完およびヒストリーコマンドを使うことができます(Minibufferを参照してください)。ファイル名の補完では、ファイル名の拡張子が変数completion-ignored-extensionsに含まれているファイルは無視されます(Completion Optionsを参照してください)。またほとんどのコマンドは、ファイルの読み込みにおいて、確認をともなう寛大な補完(permissive completion with confirmation)を使います。この補完では、存在しないファイル名が許されますが、存在しないファイル名の入力を完了するためにRETをタイプすると、Emacsは‘[Confirm]’を表示し、この確認に同意するために2番目のRETをタイプしなければなりません。詳細については、Completion Exitを参照してください。

それぞれのバッファーは、バッファーローカルな変数default-directoryに、デフォルトのディレクトリーを格納しています。ミニバッファーを使ってファイル名を読み取るとき、通常Emacsはミニバッファーの初期内容として、デフォルトディレクトリーを挿入します。変数insert-default-directorynilに変更することにより、この挿入を抑制できます。常にEmacsは任意の相対パスで指定されたファイル名を、デフォルトディレクトリーにたいする相対パスとみなします。たとえばディレクトリーを指定しないファイル名は、デフォルトディレクトリーのファイルを指定します。

ファイルをvisitするとき、Emacsはvisitしているバッファーのdefault-directoryに、そのファイルのディレクトリーをセットします。C-x bのようなコマンドを通じて、ファイルをvisitしていないバッファーを新たに作成すると、通常そのバッファーのデフォルトディレクトリーは、現在のバッファーのデフォルトディレクトリーをコピーします。現在のバッファーのdefault-directoryの値を見るために、M-x pwdコマンドを使用できます。M-x cdコマンドはディレクトリー名の入力を求め、バッファーのdefault-directoryもそのディレクトリーをセットします(これを行うことによりバッファーのファイル名は変更されません)。

例として、ファイル/u/rms/gnu/gnu.tasksをvisitしているとします。このときデフォルトディレクトリーは/u/rms/gnu/にセットされます。ファイル名を読み取るコマンドを呼び出して、ミニバッファーでディレクトリー名を省略して単に‘foo’と入力すると、これはファイル/u/rms/gnu/fooを指定したことになります。‘../.login’と入力すると/u/rms/.login、‘new/foo’と入力すると/u/rms/gnu/new/fooを指定したことになります。

ミニバッファーにファイル名をタイプするとき、2つのショートカットを使うことができます。2つのスラッシュは、2番目のスラッシュの前にあるすべてを無視します。そして‘~/’は、ユーザーのホームディレクトリーです。Minibuffer Fileを参照してください。

文字‘$’は、ファイル名を置き換える環境変数の代用として使われます。環境変数の名前は、‘$’の後ろのすべての英数字から構成されます。‘$’の後ろの、大カッコ(braces)に囲まれた変数名も使用できます。たとえばシェルコマンドexport FOO=rms/hacksは、名前がFOOの環境変数をセットするために使われます。すると/u/$FOO/test.c/u/${FOO}/test.cはどちらも、/u/rms/hacks/test.cの省略形となります。環境変数が定義されていないときは、何の置き換えも発生せず、文字‘$’はそれ自身を意味します。環境変数は、それがEmacsの開始前に適用されたときだけ、Emacsに影響を与えることに注意してください。

$’により環境変数が展開されるようなとき、名前に‘$’を含むファイルにアクセスする場合は、‘$$’とタイプします。1つの‘$’が環境変数を展開するのと同時に、2つのペアは1つの‘$’に変換されます。かわりにファイル名を‘/:’でクォートすることもできます(Quoted File Namesを参照してください)。名前が文字‘~’で始まるファイル名も、‘/:’でクォートするべきです。

ファイル名に非ASCII文字を含めることができます。File Name Codingを参照してください。