tmux 中的 Vim 写入延迟

tmux 中的 Vim 写入延迟

我注意到,在 SSH 会话中通过 tmux 使用 Vim 时,当我: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

在 vim 中写入文件不会更改任何文件。旧文件将被新文件替换,旧文件保持不变。因此,如果您在其他地方打开了旧文件,则不会看到任何更改。Vim 的设计目的不是在其他程序使用文件时对其进行修改。

相关内容