在Gvim中文本消失

7
我在Ubuntu上使用GVim时遇到了字体渲染问题已经有一段时间了,我经常会在切换标签页时注意到这个问题。在我切换标签页后,有时候某些行不会被渲染出来。如果我按下ctrl+l,标签页中的内容将重新绘制,缺失的行也会被正确地渲染出来。我想我可以在我的.vimrc文件中编写一个函数,在我切换标签页后自动运行ctrl+l,但我感觉这只是回避问题而不是解决潜在问题。
  • Ubuntu 11.10
  • GVim 7.3
  • .vimrc: set guifont=Inconsolata\ 12

我在不同版本的Ubuntu和不同的GUI字体设置下都遇到过这个问题。我很乐意听取任何人对于帮助我解决这个问题的想法。

这些是我用于切换标签页的函数:

function TabLeft()
   let tab_number = tabpagenr() - 1
   if tab_number == 0
      execute "tabm" tabpagenr('$') - 1
   else
      execute "tabm" tab_number - 1
   endif
endfunction

function TabRight()
   let tab_number = tabpagenr() - 1
   let last_tab_number = tabpagenr('$') - 1
   if tab_number == last_tab_number
      execute "tabm" 0
   else
      execute "tabm" tab_number + 1
   endif
endfunction

map <silent><C-S-PageUp> :execute TabRight()<CR>
map <silent><C-S-PageDown> :execute TabLeft()<CR>

通过在每个“execute“tabm”命令后添加“execute <C-l>”,我的选项卡切换现在强制屏幕重新绘制。这感觉像一个临时解决方案,直到我能够找出根本问题是什么。 - Sean McCleary
2个回答

5
我曾在Ubuntu上遇到过字体渲染问题。我的解决方法是使用“textmode”样式的选项卡标题,请参见guioptions。
这是我喜欢的设置:
:se guioptions=agim

请注意:
  • 我可能想多了,但它似乎更加敏捷了
  • 它会增加更多的编辑屏幕空间
  • 上述设置还将删除所有滚动条(谁需要滚动条?)
要仅更改选项卡标题样式,请尝试例如:
:se guioptions-=e

我添加了 se guioptions=agim。如果说什么的话,我真的更喜欢更干净的外观。我讨厌 GVim 添加到编辑器中的所有额外垃圾。自从做出这个改变后,我没有看到任何文本渲染问题。在进行更多测试一段时间后,我将把这个答案标记为被接受的答案。谢谢。 - Sean McCleary
我遇到了同样的问题,似乎删除-e选项对我有用。 - Makis

0

我从未见过使用:execute来调用函数(我认为它是Vim版本的其他脚本语言中的eval())。尝试将:execute TabRight()<CR>更改为:call TabRight()<CR>,看看是否有帮助。


我将“execute”更改为“call”,标签切换功能仍然正常。我认为在这种情况下使用“call”比使用“execute”更加正确。 - Sean McCleary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接