Emacsでバッファをセーブするとは,バッファの内容を読み込んだファイルに 書きもどすことです.
save-buffer
).
save-some-buffers
).
not-modified
).
write-file
).
ファイルをセーブして修正を残したいときは,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 written)
コマンドC-x s (save-some-buffers
)を使って,修正したおのお
ののバッファをセーブすることができます.このコマンドでは最初に各バッファ
についてセーブするかどうか聞いてきます.この質問にはyまたはn
で答えます.Emacsを終了するキーC-x C-cはsave-some-buffers
を
呼び出すので同じ質問をされます.
バッファを修正したけれどもセーブしたくない場合は,そのことを知らせなく
てはなりません.さもないと,save-some-buffers
を使うたびに,誤って
セーブしやすくなります.1つにはM-~ (not-modified
)を入力する
方法があります.これはバッファが修正されているという印を消去します.こう
すればセーブコマンドはバッファのセーブの必要性を認めなくなります
(`~'は数学で`not'を表す記号に使われます.Meta-~はメタにされた
`not'になります).またset-visited-file-name
を使って,そのバッファ
を,重要でないファイル名のファイルを読み込んでいることにできます.また別
の方法としては,ファイルから再びテキストを読み取って,ファイルの読み込み
やセーブ以後の修正をすべて破棄することができます.これは復帰(リバート)と
呼ばれます.See section バッファの復帰.また,変更取り消しコマンド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-sは,C-x C-wと同じ機能になります.つまりファイル名を読み取り,
バッファをそのファイルを読み込んでいるものとして,そこへセーブします.ファ
イルの読み込みをしていないバッファのデフォルトファイル名はバッファ名とバッ
ファのデフォルトディレクトリを組み合わせて作られます.
Emacsがファイルセーブをするときに,ディスク上の最新バージョンの日付が Emacsが最後に読み書きした日付と異なっていることを発見した場合には,この 事実が表示されます.これは,それがおそらく同時編集によって起こった問題で あり,すぐに注意をしなくてはならないからです. See section 同時編集に対する保護.
変数require-final-newline
がnon-nil
なら,ファイルが書き込
まれるごとにEmacsは必要に応じてファイルの最後に改行文字を補います.
ファイルの書き出しを別の仕方に変えたり,書き出す前に別のことを行なうこ
とができます.これにはフック変数write-file-hooks
を使います.この
変数の値は関数のリストでなくてはなりません.あるファイルが書き出されよう
とするときに,このリストの関数が順に引数なしで実行されます.そのうちの1
つがnon-nil
の値を返したなら,Emacsはそれをファイルはふさわしい方
法で書き出されたと解釈して,残りの関数の実行をやめます.また,標準の書き
出しも行ないません.