GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/Minibuffer-File.html ・ emacs-doc.conao3.com

10.2 ファイル名用ミニバッファ

C-x C-f (find-file) などのコマンドでは、ミニバッファを使用してファイル名引数を読み込みます(ファイルを参照)。ミニバッファでファイル名を読み込む際、通常はスラッシュで終わる初期テキストが表示されます。これがデフォルトディレクトリです。例えば、次のように始まることがあります:

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 を使用してディレクトリ名を逆順に指定することもできます(Words を参照)。

全く別のディレクトリにあるファイルを指定するには、C-a C-k でデフォルト設定全体を上書きできます(ミニバッファでの編集を参照)。あるいは、デフォルト設定を無視して、デフォルトディレクトリの後にスラッシュまたはチルダで始まる絶対ファイル名を入力することもできます。例えば、次のように /etc/termcap を指定できます。

Find file: /u2/emacs/src//etc/termcap

ダブルスラッシュを指定すると、Emacsはペアの2番目のスラッシュより前の部分をすべて無視します。上記の例では /u2/emacs/src/ が無視されるため、指定された引数は /etc/termcap となります。ファイル名の無視された部分は、ターミナルが許可していれば薄表示になります。(この薄表示を無効にするには、コマンド M-x file-name-shadow-mode でファイル名シャドウモードをオフにしてください。)

リモートファイル名を補完する場合(リモートファイルを参照)、ダブルスラッシュの挙動が若干異なります。これにより、Emacsはファイル名部分のみを無視し、残りの部分(メソッド、ホスト、ユーザー名など)はそのまま保持します。スラッシュを3つ連続して入力すると、リモートファイル名のすべてが無視されます。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 に変更してください。その場合、ミニバッファは空の状態で始まります。とはいえ、相対ファイル名の引数は引き続き同じデフォルトディレクトリを基準に解釈されます。

ミニバッファにリモートファイル名を入力することもできます。リモートファイルを参照してください。