Запись файла с помощью vim не запускает событие изменения файла в OS X
Я использую watchdog для мониторинга событий без изменений в OS X. Если я изменю содержимое безлитражного файла с помощью TextMate или Sublime Text фиксируется событие модификации. Однако, если я отредактирую контент с помощью vim, событие с изменением файла не будет запущено (но будут созданы события создания файлов для файлов, созданных с помощью vim). Я видел такое же поведение с FSEvents и kqueue (оба из которых я практически не знаю).
Интересно, может ли кто-нибудь объяснить это поведение?
Ответы
Ответ 1
Vim обычно не создает временный файл, а затем переименовывает его. Это связано с тем, что аспекты файловой системы, такие как ссылки (как мягкие, так и жесткие), сохраняются при записи файлов. Это кратко обсуждается в разделе Writing документации Vim с дополнительной информацией в 'backupcopy'
.
Ваши события изменения файла могут быть ограничены изменениями записей в каталоге.
Ответ 2
В Watchdog readme есть раздел, специально предназначенный для описанной проблемы: об использовании сторожевого пса с редакторами, такими как Vim. В ~/.vimrc
рекомендуется использовать set noswapfile
.