パーソナルツール

vimエディタが(勝手に)作成する、一見、不要に見えるファイルが何をしているか

作者: 小見 拓 最終変更 2012年01月08日 11時59分

このページではvimエディタにより自動的に作成される、 スワップファイル、バックアップファイル、viminfoファイルがどのような役割を持ったファイルであるか、 ファイルの出力先を変更するには、ファイルの生成を止めるには、どうすればよいか、 について説明します。 (Windows, Mac)

概要

このページではvimエディタにより自動的に作成される、
スワップファイル、バックアップファイル、viminfoファイルがどのような役割を持ったファイルであるか、
ファイルの出力先を変更するには、ファイルの生成を止めるには、どうすればよいか、について説明します。

.swpファイル

.swpファイルはどのような役割をもったファイルか

.swpファイルはスワップファイルと呼ばれています。
スワップファイルはアプリケーションのクラッシュに備えて、 vimエディタでの編集開始時に作成され、編集後に削除される編集情報の記録ファイルです。
スワップファイルを使用していれば、vimエディタがシステムエラーで強制終了しても、 保存前のデータが失われずに済みことがあります。

スワップファイルの使い方

スワップファイルを使用しての保存前データのリカバリーの方法については、
別の記事に内容をまとめています。そちらの記事をご覧ください。

swapファイルが見つかった場合にどのように対処すべきか(クラッシュからのリカバリー)

スワップファイルの出力先を変更する

スワップファイルの作成ディレクトリを変更するには、
「directory」オプションで出力先ディレクトリを指定します。

" この設定はvimエディタの設定ファイルに書きます。
" Windowsの場合のスワップファイルの作成ディレクトリ指定の例。
:set directory=C:/Temp
:set directory=~/vimfiles/tmp
:set directory=.

" Mac OSXの場合のスワップファイルの作成ディレクトリ指定の例。
:set directory=/tmp
:set directory=~/.vim/tmp
:set directory=.

スワップファイルを作成しない

スワップファイルを作成したくない場合は、
vimエディタの設定ファイルで「swapfile」オプションをnoにセットします。

" スワップファイルを作成しない
:set noswapfile

Note

逆にswapfileオプションを有効にするには、次のように指定します。

:set swapfile

~(チルダ)ファイル

~(チルダ)ファイルはどのような役割をもったファイルか

ファイル名に「~(チルダ)」が付いたファイルはバックアップファイルです。 ファイルを保存時に、変更前のファイルをもとにして作成されます。
ファイルの編集に失敗しても、このバックアップファイルを使用して、 一つ前の世代まではファイルの状態を戻せます。

sample.txt

 ↓ 「~」のついたバックアップファイルが作成される

sample.txt~

バックアップファイルによるバックアップ

バックアップファイルを使用して一つ前の世代まで戻す場合は、
vimエディタ側でのサポートは特に無いので、手作業でリカバリー作業を行います。

  1. 現行のファイルを削除する。
  2. バックアップファイルをリネームする。

バックアップファイルの出力先を変更する

バックアップファイルが作成されるディレクトリを変更するには、
「backupdir」オプションで出力先ディレクトリを指定します。

" この設定はvimエディタの設定ファイルに書きます。
" Windowsの場合のバックアップファイルの作成ディレクトリ指定の例。
:set backupdir=C:/Temp
:set backupdir=~/vimfiles/tmp
:set backupdir=.

" Mac OSXの場合のバックアップファイルの作成ディレクトリ指定の例。
:set backupdir=/tmp
:set backupdir=~/.vim/tmp
:set backupdir=.

バックアップファイルを作成しない

バックアップファイルを作成したくない場合は、
vimエディタの設定ファイルで「backup」オプションを無効にします。

" バックアップファイルを作成しない
:set nobackup

Note

backupオプションを有効にするには次のように指定します。

:set backup

.viminfoファイル

.viminfoファイルははどのような役割をもったファイルか

.viminfo、_viminfoファイルは、コマンド、編集情報、検索情報、レジスタなどの 履歴情報を保存しているファイルです。
このファイルはvimエディタの終了時に作成され、次回のvimエディタ起動時に、 状態を復元するために使用されます。

viminfoファイルの使い方

vimエディタの「viminfo」オプションを変更することにより、
viminfoファイルでどのようなデータを保存するか、
viminfoファイルからどのデータを読み込むかを指定できます。

「viminfo」オプションの詳細については、vimエディタのヘルプファイル、21.3の項を参照して下さい。

:help 21.3

viminfoファイルの出力先を変更する

viminfoファイルの出力先も変更できます。
viminfoファイルの出力先は、「viminfo」オプションの「n」フラグで指定します。

:set viminfo={他のフラグ...},n{ファイルパス}

" 今のviminfoの設定に追加するとしたら、このように設定
:set viminfo+=n{ファイルパス}

「viminfo」オプションの「n」フラグは、全フラグ中、最後に指定しなければなりません。
そうしないと、「n」フラグ以降に指定したフラグがファイルパスの一部として解釈され、エラーが発生します。

" この設定はvimエディタの設定ファイルに書きます。
" Windowsの場合のviminfoファイルの指定の例。
:set viminfo+=n~/vimfiles/tmp/viminfo.txt
:set viminfo+=nC:/Temp/viminfo.txt

" Mac OSXの場合のviminfoファイルの指定の例。
:set viminfo+=n~/.vim/tmp/viminfo.txt
:set viminfo+=n/tmp/viminfo.txt

viminfoファイルを作成しない

「viminfo」オプションに何のフラグも設定しなければ、 viminfoファイルの作成、および、読込は行わなくなります。
vimエディタの設定ファイルで次のように指定してください。

" viminfoファイルを作成しない
:set viminfo=

注意事項など

このページで紹介したファイル、スワップファイル、バックアップファイル、viminfoファイルには、 ファイルに書き込んだ内容や、入力した情報が書き込まれています。 上で紹介しているように、ファイルの生成パスを変更することはできますが、 マルチユーザ環境では出力先のディレクトリに気をつけないと、 他のユーザに作業内容を覗かれる可能性があります。
(たとえば、共有のTempディレクトリにファイルを作成する設定にしておいてから、 vimエディタでパスワードのメモしたら、パスワードを読み取られるかも..)

ドキュメントアクション
コメント
blog comments powered by Disqus