ファイルに保存する。(:sav[eas])

早くVimmerになりたい!
ようやく手元に話題の「実践Vim 思考のスピードで編集しよう!」が届きました!

これでVim力をレベルアップをしたいと思います。

この記事は Vim Advent Calendar 2012の278日目の記事です。
277日目は @manga_osyo さんの「Vim で非同期で Clang を使用したコード補完を行う」でした。

今回の記事は至って単純な「ファイルに保存する」についてです。

保存する。(:w[rite])

ググると大体「:w(rite)」しか出てきません。
helpを見るとこんな感じ。

                                                        *:w* *:write*
                                                *E502* *E503* *E504* *E505*
                                                *E512* *E514* *E667* *E796*
:w[rite] [++opt]        バッファ全体をカレントファイルに書き込む。これはファイ
                        ルに対する変更点を保存するときの普通の方法である。
                        オプション 'readonly' がオンであるかファイルに書き込め
                        ない理由が何かあるときには実行に失敗する。

しかし、Vimでは、もう一つあります。
せっかくあるのに、ググっても「:w」しか出てこないと寂しいので、今回紹介します。

保存する。(:sav[eas])

  • help「:h sav」より
                                                        *:sav* *:saveas*
:sav[eas][!] [++opt] {file}
                        カレントファイルをファイル名 {file} として保存し、カレ
                        ントバッファのファイル名を {file} に変える。それまでの
                        カレントファイルの名前はオルタネートファイルの名前にな
                        る。既存のファイルを上書きするには [!] が必要になる。
                        'filetype' が空の場合、保存の前に新しいファイル名に対
                        してファイルタイプ検出が行われる。
                        保存が成功すると 'readonly' がオフになる。
                        {Vi にはない}

どんな場面で使ってるか?

既存ファイルを残しつつ、新規ファイルに保存し、更に編集した場合。

うーん。ちょっと意味が分からないですね。
具体的には、今週の週報「syuhou_20130903.txt」を書かないといけないとします。
先週の週報「syuhou_20130827.txt」があります。
この先週の週報を元に書きなおしたい場合に使ってます。

$> vim syuhou_20130827.txt

Vimmerの方々は、一度Vimを起動すると閉じないと聞いたので、
正確には、

:e syuhou_20130827.txt

ですね。

f:id:kocha2012:20130902233541p:plain

ここで、

:w syuhou_20130903.txt

だと、カレントバッファは「syuhou_20130827.txt」のままです。

f:id:kocha2012:20130902233558p:plain

しかし、

:sav syuhou_20130903.txt

だと、カレントバッファが「syuhou_20130903.txt」になるので、
更なる追記も楽ちんです。

f:id:kocha2012:20130902233614p:plain

とまぁーこんな感じで使ってます。
自分のディレクトリに Vim Girlとの夏の思い出 が無かった・・・
誰かください(T_T)

次回は @manga_osyo さんです。