ファイルを操作するEmacsのコマンドには,たいていファイル名の指定が必要 です(セーブとリバートでは,バッファは使用するファイル名を知っているので 例外です).ファイル名は,ミニバッファを使って指定します (see section ミニバッファ).長いファイル名を指定するには,入力補完機能が便利で す.See section 入力補完機能.
RETキーだけを入力して空の引数を入力したときは, 常にデフォルトファイル名が使われます.デフォルトファイル名はカレン トバッファに読み込まれているファイルの名前で,Emacsのファイルコマンドを 使ってそのファイルを操作するのが簡単になります.
バッファにはそれぞれデフォルトディレクトリがあります.通常はそのバッファ
に読み込まれているファイルのディレクトリと同じです.Emacsがファイル名を
読みとる場合に,ディレクトリの指定がないときには,デフォルトディレクトリ
が使われます.スラッシュで始まらない相対的指定をしたときは,デフォルトディ
レクトリからの相対的なものと解釈されます.デフォルトディレクトリは,変数
default-directory
に保存され,それぞれのバッファに個別の値となりま
す.
たとえば,デフォルトファイル名が,`/u/rms/gnu/gnu.tasks'であれば, デフォルトディレクトリは,`/u/rms/gnu/'です.ディレクトリを指定せず に`foo'だけを入力したときには,`/u/rms/gnu/foo'を意味します. `../.login'は,`/u/rms/.login'を,`new/foo'はファイル名 `/u/rms/gnu/new/foo'をそれぞれ意味します.
M-x pwdコマンドはカレントバッファのデフォルトディレクトリを表示
し,コマンドM-x cdはそれを(ミニバッファを使って読みとられる値に)設
定します.バッファのデフォルトディレクトリが変更されるのは,cd
コ
マンドが使われたときだけです.ファイルを読み込んだバッファのデフォルトディ
レクトリはそのディレクトリに初期設定されます.バッファがC-x bを使っ
て作成された場合は,デフォルトディレクトリはその時点でのカレントバッファ
のものと同じになります.
ファイル名を読みとるためにミニバッファが起動されたときは,実際にはデフォ
ルトディレクトリがミニバッファに現われます.これには2つの目的があります.
1つはデフォルトが何であるかを示すことです.これにより相対的ファイル名を
入力することができ,その意味が確実にわかります.もう1つは,デフォルトを
編集して別のディレクトリの指定ができることです.デフォルトディレクトリの
挿入は,変数insert-default-directory
をnil
にすると働きませ
ん.
テキストの一部としてのデフォルトディレクトリ名を無視して,絶対ファイル 名を入力するのは全く問題ありません.ミニバッファの内容はおかしなものに見 えますが,実際はそうではありません.これに関しては,See section ファイル名用のミニバッファ.
ファイル名中の`$'は,環境変数に展開するのに使われます.たとえば, `FOO'という名前の環境変数を`setenv FOO rms/hacks'というシェル コマンドで設定したなら,`/u/rms/hacks/test.c'を `/u/$FOO/test.c'または`/u/${FOO}/test.c'というように表すこと ができます.環境変数の名前には,すべての英数字が使えます.その名前を `$'に続けるか,`$'後ろにかっこで括って表します.ただし, `setenv'がEmacsに影響を与えることができるのは,Emacsを起動する前に 実行したときだけです.
ファイル名に`$'を含むファイルにアクセスするためには,`$$'と
タイプしてください.単独の`$'を環境変数に置換するときに,このペアも
`$'に変換されます.この置換を行なうLisp関数は
substitute-in-file-name
といいます.この置換は,ミニバッファを用い
て読みとったファイル名に対してだけ行なわれます.