Practice of Programming

プログラム とか Linuxとかの話題

[Linux][vim] samba上のファイルをvimで編集する時のtimestampの問題を回避する設定

どうも、samba上でvimでファイルを編集していると、変更してないのに変更されていると文句を言ってくる。

WARNING: The file has been changed since reading it!!!
警告: 読込んだ後にファイルに変更がありました!!!

こいつです。


ググってみたところ、sambaのtimestampまわりの問題のようなんだけど、
バグ報告はあるものの、だいぶ前に既に直っているとかで、closeされちゃったりしてて、なんかいまいちよくわからず。
回避できずにだいぶ放置してたんだけど…。
やっぱ、なんとかしようと思い、vimのマニュアルを読んでいると以下のものが使えそうな気がした。

  • set autoread
    • 変更を検知して読み直す
  • autocmd
    • イベントに関連付けてコマンドを実行できる
  • checktime
    • timestampのチェック

これらを利用して以下のように設定。

autocmd BufWritePost * sleep 1
autocmd BufWritePost * checktime
set autoread

これで、一応回避できました。
sleep 1 を入れないと、どうもダメでした。

※本当は、samba側でなんとかしたいんだけども