C-x C-f
(find-file
)のようなコマンドは、ミニバッファーを使ってファイル名引数を読み取ります。ファイル名を読み取るためにミニバッファーを使用しているとき、通常は最後にスラッシュがついたテキストで開始されています。これはデフォルトディレクトリー(default
directory)です。たとえば以下のように開始されていたとします:
Find file: /u2/emacs/src/
ここで‘Find file: ’はプロンプト、‘/u2/emacs/src/’はデフォルトディレクトリーです。ここでbuffer.cを入力すると/u2/emacs/src/buffer.cを指定したことになります。デフォルトディレクトリーについての情報は、ファイルの名前を参照してください。
あなたが望むかもしれないファイル名のデフォルト候補は、M-nとタイプすることにより利用できます。ミニバッファーヒストリーを参照してください。
..で親ディレクトリー内のファイルを指定できます。つまり/a/b/../foo.elは/a/foo.elと同じです。M-DELを使えば、ディレクトリー名を後方にkillできます(単語を参照してください)。
デフォルトディレクトリーとは無関係のファイルを指定する場合、デフォルト値全部をC-a C-kでkillできます。かわりにデフォルト値を無視することもできます。これはスラッシュで始まる絶対パスのファイル名か、チルダで始まるファイル名をデフォルトディレクトリーに続けて入力します。たとえば以下のようにして/etc/termcapを指定できます:
Find file: /u2/emacs/src//etc/termcap
ダブルスラッシュにより、Emacsは2番目のスラッシュより前のすべてを無視します。上の例では/u2/emacs/src/は無視されるので、引数は/etc/termcapとなります。無視される部分のファイル名は、端末に可能なら目立たないような表示になります(これを無効にするには、コマンドM-x file-name-shadow-modeでFile Name Shadowモードをオフにしてください)。
リモートファイルの名前(リモートファイルを参照)を補完する際、ダブルスラッシュは若干異なる挙動を示します。この場合のダブルスラッシュは、Emacsがファイル名の部分だけを無視して、他の部分(method、host、username、...など)を手付かずのままにするようにします。3つのスラッシュを連続してタイプすると、リモートファイル名の中のすべてを無視します。File name completion in The Tramp Manualを参照してください。
Emacsは~/をホームディレクトリーと解釈します。~/foo/bar.txtはホームディレクトリーにある、fooというディレクトリーの、bar.txtという名前のファイルを指定します。さらに~user-id/はログイン名がuser-idというユーザーの、ホームディレクトリーを意味します。~の前のディレクトリー名は無視されるので、/u2/emacs/~/foo/bar.txtは~/foo/bar.txtと同じです。
MS-WindowsとMS-DOSでは、ユーザーは常にホームディレクトリーを持つとは限らないので、Emacsはいくつかの代替ディレクトリーを使います。MS-WindowsについてはMS-WindowsでのHOMEディレクトリーと開始ディレクトリー、MS-DOSについては MS-DOSでのファイル名を参照してください。 これらのシステムでは~user-id/は現在のユーザーの場合だけ、つまりuser-idが現在のユーザーのログイン名のときだけがサポートされます。
Emacsがファイル名を読みとるとき、デフォルトディレクトリーを挿入しないようにするには、変数insert-default-directory
をnil
に変更します。この場合、ミニバッファーは空で開始されます。それでも相対パスでのファイル名引数は、同じデフォルトディレクトリーにもとづいて解釈されます。
ミニバッファーにリモートファイル名を入力することもできます。 リモートファイルを参照してください。