当没有事件发生时,Vim 会在几秒钟后发出警报

当没有事件发生时,Vim 会在几秒钟后发出警报

我在 tmux 会话中使用 Vim,最近我注意到当我切换到另一个 tmux 窗口时,Vim 在几秒钟后发出警报。移动窗口后,Vim 中没有发生任何事情 - 通常我会进行一些编辑并使用 写入文件,:w然后移动到 tmux 中。几秒钟后,Vim 发出警报,tmux 闪烁,表明 Vim 需要注意。

为什么 Vim 如此需要帮助?我怎样才能防止这种情况发生?

更新 #1

:au FocusLost根据要求输出:

:au FocusLost
--- Auto-Commands ---
Press ENTER or type command to continue

链接至.vimrc.tmux.conf

更新#2

使用版本 Vim 7.3 和 tmux 1.6。这整件事发生在 tmux 运行的 SSH 会话中。我Ctrl+A Ctrl+N按照 tmuxconf使用 tmux 键从 Vim 窗口切换出来。

答案1

自动命令和焦点

检查是否有任何与失去焦点相关的自动命令(:au或)。:autocmd这些是您可以运行的命令vim

:autocmd FocusGained
--- Auto-Commands ---
fugitive_status  FocusGained
    *         call fugitive#reload_status()

:au FocusLost
--- Auto-Commands ---
Press ENTER or type command to continue

上面显示了如何检查这一点。第一个示例使用命令的全名:autocmd.第二个显示了命令的缩写形式 ( :au)。您可以为其中任何一个提供组名称,以显示自动命令列表的子集。

也许您需要活力?

我对此不太熟悉,但我确实遇到过这个名为:Vitality 的插件,它看起来可以帮助解决iTerm2和 问题tmux。我并不完全清楚这修复了什么,但可能值得一看。

摘自网页

例如:在 iTerm 2 中运行 Vim 时,它甚至可以通过 tmux 恢复 FocusGained 和 FocusLost 自动命令!

参考

答案2

vim-gitgutter插件导致了意外的 Vim 警报。以下行添加到我的.vimrc修复中:

let g:gitgutter_realtime = 0

以下对来源的评论给了我解决方案: https://github.com/airblade/vim-gitgutter/issues/105#issuecomment-23055765

感谢@slm 指出正确的方向:)

相关内容