Neovim Lagging in Tmux Diagnose
遇到在Debian服务器上neovim打开巨慢无比的问题,记录解决过程如下。
在macOS上使用iTerm2打开tmux,然后在tmux中使用neovim,有下面3个使用场景:
- 在本地macOS直接使用neovim
- ssh到本地局域网一台Debian使用neovim
- ssh到VPS,也是Debian使用neovim
- 以上3处的neovim配置、插件完全相同,都是同一份;
- 上述2和3的Debian系统版本完全一致,neovim安装方式完全一致。
- 在上述1和2中,使用neovim正常,但是在3上面,打开巨慢无比。
- iTerm2: 3.4.19
- tmux: 3.3a
- neovim: 0.9.1
tmux已经配置了xterm-256,初步排除颜色配置不对导致的渲染问题。
首先判断是neovim的bug,还是我的配置导致的问题。
nvim -u NORC
打开速度正常,这就排除了问题是由neovim代码bug造成的可能性,问题原因锁定在了配置上面。 但是同样的配置,在另一台同样的环境的Debian上,却是正常的。
nvim --startuptime cost.txt cost.txt
阅读启动日志,发现严重拖慢启动速度的原因是在加载clipboard.vim上。 尝试关闭option.lua中和clipboard有关的配置,
local opt = vim.opt
-- use system clipboard as default register
-- opt.clipboard:append("unnamedplus")
再次启动,一切正常。
破案了,就是clipboard配置造成的。
但是本地那台Debian上的neovim是同样的配置,却可以正常启动,一点也不慢。 什么原因?
发现在VPS上的Debian安装了xclip和xsel两个工具,导致clipboard.vim尝试使用X环境的clipboard,但两台Debian都是服务器,没有装X环境。
本地的Debian上没有安装这两个工具,所以一切正常。
卸载xclip和xsel之后,两台Debian都表现一致了。
-
启动巨慢无比是vim.opt.clipboard配置不当导致。
-
xclip和xsel会影响clipboard.vim的行为。
-
如果确实需要xclip和xsel工具,可以指定系统环境设置clipboard配置即可,只在macOS下使用系统剪贴板:
-- clipboard
local uname = vim.loop.os_uname()
_G.OS = uname.sysname
_G.IS_MAC = OS == 'Darwin'
_G.IS_LINUX = OS == 'Linux'
_G.IS_WINDOWS = OS:find 'Windows' and true or false
_G.IS_WSL = IS_LINUX and uname.release:find 'Microsoft' and true or false
if _G.IS_MAC then
-- use system clipboard as default register
-- only use system clipboard on macOS
opt.clipboard:append("unnamedplus")
end
- 定位neovim的异常表现,首先要明确是软件bug还是配置不当导致。
- vim的启动日志可以快速明确具体的问题点。
END.