最近,我开始遇到 Vim 的“渲染”问题。我说渲染是因为它似乎只影响屏幕上显示的内容,而不影响实际文件的输出。
我在定制的 Yocto 发行版上运行 openbox 和 rxvt/xterm。我以普通用户身份登录,启动 openbox,打开终端窗口 (rxvt) 并使用 打开新文件vim test.txt
,一切正常;底线 (状态行) 显示"test.txt" [New]
在左侧和0,0-1 All
右侧。我按I
进入插入模式,底线-- INSERT --
在左侧和0,1 All
右侧变为,一切正常。在左侧,所有空行都以 开头,~
除了顶部行,其中光标是第一个字符。
现在,我按下类似这样的键k
,第一个字符变成 a ~
,光标向右跳一个字符,但k
看不到任何内容。此外,底部现在有两行。顶部一行显示-- INSERT --
在左侧和1,2test.txt + (~)
右侧。底部一行显示- VIM
在左侧,右侧什么也没有。
如果我忽略这个“渲染中断”的事实并保存文件然后重新打开它,文件内容将正确显示,并且该字符k
是第一个也是唯一的字符。所以这似乎只是一个视觉问题。
当我vim
以普通用户身份在 rxvt/xterm 中运行时,会发生这种情况。这没有发生当我vim
以普通用户身份在 tty3 中运行时(Ctrl+Alt+F3)。这没有发生当我运行sudo vim
或su - root
然后运行时vim
,在 openbox 中的 rxvt 里面。
我检查了不同环境中的 $TERM 变量是否存在不匹配的情况:
- 在 rxvt 中作为普通用户
echo $TERM
= rxvt - 在 xterm 中作为普通用户
echo $TERM
= xterm - 在 rxvt 中以 root 身份运行,
su - root
然后echo $TERM
= rxvt - 在 xterm 中以 root 身份
su - root
运行echo $TERM
= xterm - 在 tty3 中作为普通用户
echo $TERM
= linux - 在 tty3 中作为 root
echo $TERM
= linux
我没有对任何配置做出任何有意识的更改,但最近我确实对内核和很多软件包进行了大量更新,但我无法判断这个问题是否在那时开始。
我还可以在哪里检查什么可能的错误?
编辑:这没有发生当我vim
以普通用户身份在 rxvt 中的屏幕会话中运行时。
- 在屏幕上作为普通用户
echo $TERM
= screen