1

Я заметил, что при использовании Vim в tmux через сеанс SSH, когда я время от времени записываю буфер на диск (то есть :w), в то время как Vim говорит, что он записан, файл остается неизменным. На самом деле, часто, когда это происходит, Vim будет жаловаться на то, что файл уже изменился, потому что, предположительно, версия файла .swp идет впереди, чем ожидалось.

Чтобы иногда обойти эту проблему, я сохраняю новый файл, выхожу, удаляю старый и переименовываю новый. Однако чаще всего эффект остается незамеченным, и я теряю работу ... Это очень расстраивает!

Есть идеи, что здесь происходит? Это происходит только в tmux, и я единственный пользователь, присоединяющийся к сессии. Если я закрываю сеанс tmux (а не отсоединяюсь), Vim больше не жалуется на файл подкачки при повторном входе.


Я могу последовательно повторить это (или, по крайней мере, подобное), выполнив следующее:

  1. Начать новый сеанс tmux
  2. vim foo.txt
  3. Напишите что-нибудь и напишите
  4. Выгрузка из сессии tmux
  5. Присоедините к сеансу tmux
  6. Выйти из Vim
  7. vim foo.txt

Теперь Vim будет жаловаться, что существует файл подкачки для foo.txt (например, .foo.txt.swp), даже если в текущем каталоге его нет.

1 ответ1

0

Запись файла в vim не меняет никаких файлов. Старый файл заменяется новым, оставляя старый файл без изменений. Так что если у вас есть старый файл, открытый где-то еще, вы не увидите никаких изменений. Vim не предназначен для изменения файла, когда какая-либо другая программа использует его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .