Есть ли одобренный способ для запроса, открыт ли документ редактором в Linux?
Например, если документ редактируется, мы можем предупредить, что документ открыт и должен быть сохранен до слияния или извлечения git
. Мы также можем захотеть избежать автоматического ведения (удаление конечных пробелов и т.д.) Для файлов, которые активно редактируются.
Есть три очевидных, но ошибочных метода.
- Проверьте, открыт ли файл с помощью
lsof
. Однако большинство редакторов не оставляют файл открытым при редактировании документа. - Проверьте, открыто ли окно редактора с помощью
wmctrl -l
. Это ограничено редакторами X, и даже тогда, только если документ является активной вкладкой. - Посмотрите, есть ли временный файл. Например, если файл
.foo.swp
существует, мы можем предположить, что файлfoo
открыт вvim
, особенно если.foo.swp
новее, чемfoo
. Однако не существует единой схемы именования для разных редакторов, и некоторые редакторы, такие какLyX
могут не создавать временный файл мгновенно.
Так есть ли рекомендуемый способ определения того, открыт ли документ в редакторе, который работает во всех редакторах (или, по крайней мере, в редакторах, совместимых с некоторым стандартом Gnome/KDE/ другим)?