質問: 私の環境はLinuxでVim 7.4 適用済パッチ: 1-1707です。 ヘルプから引用 ``` scratch いつでも破棄されうるテキストを保持する。ウィンドウを閉じても 保たれ、明示的に削除されなければならない。 設定は: :setlocal buftype=nofile :setlocal bufhidden=hide :setlocal noswapfile このバッファを識別するためにはバッファ名が使われる。ただし、そ のためにはそのバッファに意味のある名前がついていなければならな い。 ``` 使い捨て用のバッファ(scratch)を作ろうと思った時に疑問に思ったことを質問させて頂きます。 buftypeにnofileを設定するだけでスワップファイルが作られませんでした。 OSやVimのバージョンなどの環境の違いによっては`setlocal noswapfile`を設定しないとスワップファイルが作られるのでしょうか? setllocal buftype=nofileを設定したら`setlocal noswapfile`を設定しなくても良いのであれば設定しないでおきたいです。 setlocal noswapfileを書いたほうが良い理由を教えてください。 次の3通りのパターンで設定後、バッファを編集してもスワップファイルが作られませんでした。 ``` vnew setlocal buftype=nofile ``` ``` vnew setlocal swapfile setlocal buftype=nofile ``` ``` vnew setlocal buftype=nofile setlocal swapfile ```
回答: まず、無名バッファに対してはスワップファイルは作成されないようです。なので、`:vnew` ではどうやってもスワップファイルは作成されません。 そして実際に動作を確認してみましたが、バッファ名が存在する場合は、`'buftype'` が `nofile` であっても `'swapfile'` がオンであれば、スワップファイルは作成されるようです。 特に理由がないのであれば、`:setlocal noswapfile` にしておいた方が無難と言えます。