ファイルを操作するEmacsコマンドの多くは、ミニバッファー(ミニバッファーでのファイル名を)を使って、ファイル名の指定を求めます。
ミニバッファーでは、通常の補完およびヒストリーコマンドを使うことができます(ミニバッファーを参照してください)。ファイル名の補完では、ファイル名の拡張子が変数completion-ignored-extensions
に含まれているファイルは無視されます(補完オプションを参照してください)。またほとんどのコマンドは、ファイルの読み込みにおいて、確認をともなう寛大な補完(permissive
completion with
confirmation)を使います。この補完では、存在しないファイル名が許されますが、存在しないファイル名の入力を完了するためにRETをタイプすると、Emacsは‘[Confirm]’を表示し、この確認に同意するために2番目のRETをタイプしなければなりません。詳細については、補完の終了を参照してください。
ミニバッファーのヒストリーコマンドは、ファイル名を読み取るための特別な機能をいくつか提供します。ミニバッファーヒストリーを参照してください。
それぞれのバッファーは、バッファーローカルな変数default-directory
に、デフォルトのディレクトリーを格納しています。ミニバッファーを使ってファイル名を読み取るとき、通常Emacsはミニバッファーの初期内容として、デフォルトディレクトリーを挿入します。変数insert-default-directory
をnil
に変更することにより、この挿入を抑制できます。常に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番目のスラッシュの前にあるすべてを無視します。そして‘~/’は、ユーザーのホームディレクトリーです。ミニバッファーでのファイル名を参照してください。
文字‘$’は、ファイル名を置き換える環境変数の代用として使われます。環境変数の名前は、‘$’の後ろのすべての英数字から構成されます。‘$’の後ろの、大カッコ(braces)に囲まれた変数名も使用できます。たとえばシェルコマンドexport
FOO=rms/hacks
は、名前がFOO
の環境変数をセットするために使われます。すると/u/$FOO/test.cと/u/${FOO}/test.cはどちらも、/u/rms/hacks/test.cの省略形となります。環境変数が定義されていないときは、何の置き換えも発生せず、文字‘$’はそれ自身を意味します。Emacs外部でセットされた環境変数は、それがEmacsの開始前に適用されたときだけ、Emacsに影響を与えることに注意してください。
‘$’により環境変数が展開されるようなとき、名前に‘$’を含むファイルにアクセスする場合は、‘$$’とタイプします。1つの‘$’が環境変数を展開するのと同時に、2つのペアは1つの‘$’に変換されます。かわりにファイル名を‘/:’でクォートすることもできます(ファイル名のクォートを参照してください)。名前が文字‘~’で始まるファイル名も、‘/:’でクォートするべきです。
ファイル名に非ASCII文字を含めることができます。ファイル名にたいするコーディングシステムを参照してください。