これらは、ファイルの保存や書き込みに関するコマンドです。
現在のバッファをファイルに保存します (save-buffer)。
バッファの一部またはすべてをファイルに保存します (save-some-buffers)。
現在のバッファが変更されたことは無視します (not-modified)。プレフィックス引数
(C-u) を指定すると、現在のバッファを変更済みとしてマークします。
現在のバッファを指定したファイル名 (write-file) で保存します。
現在のバッファを保存するファイル名を変更します。
M-x set-visited-file-nameと同様ですが、バッファが参照しているファイル(もしあれば)の名前も変更します。
ファイルを保存して変更内容を確定させたいときは、C-x C-s (save-buffer) と入力してください。保存が完了すると、C-x
C-s に次のようなメッセージが表示されます。
Wrote /u/rms/gnu/gnu.tasks
現在のバッファが変更されていない場合(バッファの作成または前回の保存以降、変更が行われていない場合)、保存を行っても効果がないため、実際には保存は行われません。その代わりに、C-x C-s はエコー領域に次のようなメッセージを表示します:
(No changes need to be saved)
接頭辞引数 C-u C-x C-s を指定すると、Emacs は次の保存時にバックアップ対象となるようバッファにマークを付けます。ファイルのバックアップを参照してください。
コマンド C-x s (save-some-buffers)
は、変更されたバッファの一部またはすべてを保存するかどうかを尋ねます。また、各バッファをどう処理するかを確認します。選択可能な応答は、query-replace の場合と同様です:
このバッファを保存し、残りのバッファについて問い合わせてください。
このバッファは保存せず、残りのバッファについて問い合わせてください。
このバッファと残りすべてを、これ以上の質問なしに保存してください。
これ以上の保存を行わずに save-some-buffers を終了する。
このバッファを保存し、他のバッファについて確認することなく save-some-buffers
を終了する。
このバッファを保存せず、未変更としてマークします。これは not-modified
コマンドと同様です(ファイル保存コマンドを参照)。
現在質問対象となっているバッファを表示します。表示モードを終了すると save-some-buffers に戻り、再び質問が表示されます。
save-some-buffers を終了し、現在問い合わせを受けているバッファを参照してください。
バッファを対応するファイルと差分比較し、どのような変更を保存することになるかを確認できます。これにより、コマンド diff-buffer-with-file が呼び出されます(ファイルの比較を参照)。
これらのオプションに関するヘルプメッセージを表示します。
save-some-buffers-default-predicate
の値をカスタマイズすることで、Emacs がどのバッファについて問い合わせるかを制御できます。
C-x C-c(Emacsを終了するためのキーシーケンス)はsave-some-buffersを呼び出し、したがって同様の質問を行います。
バッファを変更したものの、その変更を保存したくない場合は、それを防ぐための措置を講じる必要があります。そうしないと、C-x s や C-x C-c
を使用するたびに、誤ってこのバッファを保存してしまう可能性があります。一つの方法として、M-~
(not-modified)
と入力することで、バッファが変更済みであるという表示をクリアできます。こうすれば、どの保存コマンドもバッファを保存する必要があるとは判断しなくなります。(「~」は数学記号として「否定」を表すためによく使われます。したがって、M-~
は「否定」をメタ化したものになります。)あるいは、ファイルにアクセスまたは保存して以降に行ったすべての変更を、ファイルから再度テキストを読み込むことで取り消すこともできます。これはリバートと呼ばれます。バッファのリバートを参照してください。(また、元に戻すコマンド C-x u を繰り返し、すべての変更を取り消すこともできますが、リバートの方が簡単です。)
M-x set-visited-file-name
は、現在のバッファが参照しているファイルの名前を変更します。ミニバッファを使用して新しいファイル名を読み込みます。その後、バッファをそのファイル名を参照している状態としてマークし、それに応じてバッファ名を変更します。set-visited-file-name
は、バッファを新しく参照しているファイルに保存するわけではなく、後で保存する場合に備えて Emacs
内部のレコードを変更するだけです。また、バッファを変更済みとしてマークするため、そのバッファ内の C-x
C-s は保存されます。
バッファを別のファイルを参照している状態としてマークし、すぐに保存したい場合は、C-x C-w
(write-file) を使用してください。これは set-visited-file-name の後に C-x C-s
を続けるのと同等ですが、C-x C-w
はファイルが存在する場合に確認を求めます。ファイルを参照していないバッファに C-x C-s
を使用すると、C-x C-w
と同じ効果が得られます。つまり、ファイル名を読み取り、バッファをそのファイルを参照している状態としてマークし、そこに保存します。ファイルを参照していないバッファのデフォルトファイル名は、バッファ名とバッファのデフォルトディレクトリを組み合わせて作成されます(ファイル名 を参照)。
新しいファイル名がメジャーモードを示唆している場合、ほとんどの場合 C-x C-w
はそのメジャーモードに切り替わります。コマンド set-visited-file-name
も同様の動作をします。ファイルモードの選択
を参照してください。
現在のバッファを、そのファイルにアクセスすることなく別のファイルに保存したい場合は、mark-whole-buffer (C-x h)、次に M-x write-region を使用してください(その他のファイル操作を参照)。
Emacsがファイルを保存しようとする際、ディスク上の最新バージョンの日付がEmacsが最後に読み書きした日付と一致しないことを検知した場合、Emacsはその旨を通知します。これはおそらく、同時編集によって生じた問題を示しており、早急な対応が必要となるためです。同時編集を参照してください。