在Mac的屏幕上,哪个默认设置会让Vim变得非常慢?

时间:2009-05-24 14:02:46

标签: vim gnu-screen

虽然我接受了一个答案,但问题仍未解决。

问题:虽然lazyredraw and showcmd are off,但在Mac的“屏幕”中,Vim的屏幕更新速度非常慢。


如下所示,行号在foldColumn上,例如,当我有行号时 alt text http://dl.getdropbox.com/u/175564/vimScreenFold.png

当我的.vimrc中没有任何内容时,可以通过相互叠加的注释行看到问题: alt text http://dl.getdropbox.com/u/175564/vimScatteredBug.png

我没有在左侧多次输入以下评论

"set list...

观察

  1. 似乎只出现在comment lines and empty lines中。但是,我得到的证据(2)表明事实并非如此。
  2. 散射主要发生在左侧窗口中。它们也出现在一个窗口中。但是,用它来检测更难。
  3. 当我在.vimrc中没有任何内容时,错误会略有不同。但是,在两种情况下都会出现“停滞”:使用空的.vimrc和非空的.vimrc。
  4. 识别错误

    从属变量

    1. 取决于comment signs automatically put by Vim 。当Vim将Python的注释符号#自动添加到我的文件中时,我注意到消失的像素,当它无法显示整个文件时。
    2. 至少依赖于 OS / X Leopard。
    3. 自变量

      1. 独立于文件:出现在Vim编辑的所有文件中
      2. line independent :在没有注释和空行的Python代码中出现
      3. .vimrc independent :使用空.vimrc
      4. .screenrc independent :出现空.screenrc
      5. 与shell无关:与Bash和Zsh一起发生
      6. Screen version independent :使用Leopard的默认屏幕和屏幕4.0.3
      7. 独立于不同的注释字符:向下滚动时出现,例如.zshrc,.vimrc和.screenrc
      8. 如何禁用Vim的default settings

8 个答案:

答案 0 :(得分:3)

我猜这个问题可能与你的termcap和terminfo设置有关。尝试从screenrc中注释掉这些内容,然后重新启动屏幕。

此外,您使用的是什么(非虚拟)终端?

啊,it looks就像你在使用OSX的Terminal.app一样,这正是我使用的(screen/zsh/vim)。默认情况下,/usr/bin/screen应与/usr/bin/vim.screenrc.vimrc一起使用。

% touch empty_screenrc
% cat empty_screerc
% /usr/bin/screen -c empty_screenrc
#...and within screen
% /usr/bin/vim -u NONE

如果问题仍然存在,则问题可能出在您的shell中。但如果这样可以解决问题,我建议您发布~/.vimrc以帮助进一步诊断。

答案 1 :(得分:2)

我没有.vimrc和.screenrc中没有任何插件。 问题仍然存在。

识别错误

  1. 独立于文件:出现在Vim编辑的所有文件中
  2. “停滞”似乎主要发生在评论行和空行中。 但是,这个bug也没有注释和空行,但它的影响似乎要小得多。

    观察图片2 alt text http://dl.getdropbox.com/u/175564/cruxMoveInVimScattered.png

答案 2 :(得分:2)

我认为OS X默认版本的屏幕不支持256色。您可以将vim设置为在.vimrc文件中使用较少数量的颜色:

set t_Co=16

在Mac OS X上,您可以重建屏幕以使用256种颜色,请参见此处:http://pjkh.com/articles/2008/07/09/osx-iterm-screen-vim-256-colors

以下是说明的简短版本:

重建屏幕,确保包含256色选项:

./configure --enable-colors256

然后您需要将以下内容添加到〜/ .screenrc:

# terminfo and termcap for nice 256 color terminal
# allow bold colors - necessary for some reason
attrcolor b ".I"
# tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
# erase background with current bg color
defbce "on"

Source

答案 3 :(得分:2)

我遇到了这个问题(只是非常缓慢),它最终成为我在Terminal.App和ITerm中使用的Consolas字体。在我的情况下,切换到摩纳哥可以大大加快速度。

答案 4 :(得分:1)

Crux move:这个错误似乎发生了,因为某些Vim的默认选项会导致问题

我现在使用.vimrc和.screenrc中的默认配置,因为我发现它们不会导致错误。

该错误似乎是轻微的评论和空行依赖。 我得到了证据。

我的Python代码中没有注释也没有空行。但是,我注意到当Vim无法显示完整的行时,它会在我的代码中添加注释标记。例如,大概是三个#-marks,Vim放在那里。

这导致像素消失。

alt text http://dl.getdropbox.com/u/175564/pythonBug.png


当我看不到Vim自动发出的评论标记时,该错误似乎发生在同一个文件中。

alt text http://dl.getdropbox.com/u/175564/counterExample.png

我按目的复制了图片的代码,以便您可以清楚地看到消失的像素。

当我在使用Python代码时,我注意到,在我向代码添加一个空行后,“停滞”发生了很大的变化。但是,我没有设法复制该事件。


不成功尝试通过.vimrc解决错误

  1. 禁用Vim自动设置的评论标志

    set formatoptions- = c

答案 5 :(得分:1)

看起来有一些与OS X的包装模式有关的已知问题,请参见编号1. here。它提出了一种解决方法。

答案 6 :(得分:1)

我遇到过与irssi和bash类似的问题,这些问题是由于颜色代码没有正确关闭造成的。

您是否尝试过其他vim主题(特别是默认主题)或运行:syntax off

答案 7 :(得分:0)

<强>调试:

有人建议我通过

冻结我的终端从其他应用程序的更改
ttyctl -f

然而,它似乎没有解决问题。 然而,它可能有助于我们找到错误,因为我们现在没有其他应用程序改变这种情况。