gvim重绘失败


9

gvim出现问题,其中屏幕重绘部分失败。很难解释,但是当我打开文本文件并向下或向上翻页时,整个文本文件无法正确重绘。在重绘之前,我必须先移动光标。由于它演示了问题,因此我在此处进行了屏幕截图:http : //www.box.net/shared/l4m1vrffl0dhigi80huz

似乎问题仅限于gvim,因为我运行的所有其他应用程序都很好,并且可以正确重绘。对我而言,在gvim中进行复制非常容易。控制台vim很好。这让我认为问题仅限于gvim。

操作系统是Arch linux 3.0,运行运行Gnome3的nvidia驱动程序(无compiz)。

uname的输出

Linux独眼巨人3.0-ARCH#1 SMP PREEMPT星期二八月30 07:32:23 UTC 2011 i686 Intel(R)Core(TM)2 CPU 6600 @ 2.40GHz纯正英特尔GNU / Linux

lsmod

lsmod | grep nvidia
nvidia              10225284  40 
agpgart                22096  1 nvidia
i2c_core               16625  2 nvidia,i2c_nforce2

gvim-版本

gvim --version VIM-Vi IMproved 7.3(2010年8月15日,2011年9月30日编译05:51:10)包含的修补程序:1-322由ArchLinux Big GT2 GT K2 GUI编译。包含(+)与否(-)的功能:+阿拉伯语+ autocmd + balloon_eval +浏览++ buildin_terms + byte_offset + cindent + clientserver +剪贴板+ cmdline_compl + cmdline_hist + cmdline_info +注释+ conceal + cryptv + cscope + cursorbind + cursorshape + dialog_con_ + diff +图+ dnd -ebcdic + emacs_tags + eval + ex_extra + extra_search + farsi + file_in_path + find_in_path + float + folding -footer + fork()+ gettext -hangul_input + iconv + insert_expand + jumplist + keymap + langmap + libcall +换行符+ lispindent + listcmds + localmap -lua +菜单+ mksession + modify_fname + mouse + mouseshape + mouse_dec + mouse_gpm -mouse_jsbterm + mouse_netterm

系统菜单文件:“ $ VIMRUNTIME / menu.vim”对$ VIM的后备:“ / usr / share / vim”编译:gcc -c -I。-Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK -pthread -I / usr / include / gtk-2.0 -I / usr / lib / gtk-2.0 / include -I / usr / include / atk-1.0 -I / usr / include / cairo -I /usr/include/gdk-pixbuf-2.0 -I / usr / include / pango-1.0 -I / usr / include / glib-2.0 -I / usr / lib / glib-2.0 / include -I / usr / include / pixman -1 -I / usr / include / freetype2 -I / usr / include / libpng14 -I / usr / local / include -march = i686 -mtune = generic -O2 -pipe -fstack-protector --param = ssp-buffer- size = 4 -D_FORTIFY_SOURCE = 1链接:gcc -L。-Wl,-hash-style = gnu -Wl,-按需-rdynamic -Wl,-export-dynamic -Wl,-E -Wl,-rpath,/ usr / lib / perl5 / core_perl / CORE -Wl ,-O1,-sort-common,-按需,-z,relro,-hash-style = gnu -L / usr / local / lib -Wl,


2
我在Gnome 3下的Ubuntu 12.10中也遇到了同样的问题。您是互联网上唯一发现它的人。自从发布这个以来有运气吗?
雅加尔

@jakar不,我从未找到解决此问题的方法。我现在正在使用nvidia驱动程序运行fc17,现在再也看不到问题了,但是我不在花哨的模式下使用Gnome 3。
sashang 2013年

是的,我认为这与gnome / gtk / xorg / drivers有关,而与gvim本身有关。我在fc17中也没有任何问题(尽管在另一台机器上),甚至运行从源代码构建的匹配版本的gvim。哦,我现在就忍受它。至少,感谢您所看到的关于此内容的唯一完整描述和视频。
雅加尔

我也有这个问题。我对解决方案真的很感兴趣。
Matt Fichman 2014年

2
这听起来很像第91期,而我目前的猜测是,这是一个gtk库问题。
克里斯汀·布拉班德

Answers:


5

我遇到了这个问题,可以通过使用该--sync选项启动gvim来解决此问题。这使X调用异步。

(感谢克里斯汀·布拉班德(Christian Brabandt)评论中的链接,指出了我的正确方向。)


在集成显卡之上的virtualbox机器上运行Debian / 9时,也遇到了同样的问题。缺少重新绘制的相同症状-拆分缓冲区不会更新显示,直到Alt + Tab键切换到另一个应用程序并返回。--sync开关解决了该问题。
安德鲁

0

这将有助于在您的OS,视频卡等上提供信息。看起来像GNOME3在...上?

使用Compiz作为带有NVIDIA视频卡的Window Manager运行Compiz作为GVIM和其他应用程序时,遇到了这样的问题,并通过转到“ Compiz Config Settings Manager”>“变通办法”>“ Qt Window Fix”进行了修复。

不知道这是否对您有帮助,特别是在使用Mutter而不是Compiz的情况下。


0

除了开箱即用的捆绑包外,您还将哪种插件插入了Vim?

您正常稳定的插件之一可能会给您带来一些麻烦。是的,GTK揭示了问题所在,但可能不是问题所在。任何会创建弹出窗口或临时创建迷你缓冲区或类似内容的东西。自动补全,摘要等...如果它是额外的插件或功能,请尝试将其关闭,看看问题是否消失。

尽管我在电影中没有看到任何此类弹出窗口,但是该插件可能正在创建其弹出窗口,意识到它实际上不是必需的,清除了弹出窗口,但随后没有重绘原始下面的内容。

全屏滚动不会重画整个缓冲区。游标显然会迫使缓冲区重新绘制邻居。

当然,这可能是GTK / GVim的核心问题(我认为X或OpenGL与它无关),但对我来说似乎不太可能(尽管我通常不使用Arch)。

如果您确实发现它是一个插件,则可能需要强制进行版本升级或降级(“破损”版本除外)。


0

FWIW我通过安装软件包vim-gtk3代替了vim-gtk(Ubuntu)摆脱了这个问题。

注意!由于某些原因,在安装软件包时,默认gvim命令未映射到vim-gtk3,因此我必须手动运行update-alternatives,如下所示:

sudo update-alternatives --set gvim /usr/bin/vim.gtk3

非常感谢此线程中有关GTK可能是问题的提示。即使使用Google,也很难找到这个问题!  

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.