代码之家  ›  专栏  ›  技术社区  ›  Peter

哪个默认设置使VIM在Mac的屏幕上非常慢?

  •  3
  • Peter  · 技术社区  · 6 年前

    虽然我接受了一个答案,但这个问题没有解决。

    问题: 尽管如此,VIM在Mac中的屏幕更新非常缓慢 lazyredraw and showcmd are off .


    例如,当我有行号时,行号如下所示出现在fold列中。 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中没有任何内容时,这个bug发生的方式略有不同。然而,“停滞”发生在两种情况下:空的.vimrc和非空的.vimrc。

    缺陷的识别

    因变量

    1. 依赖于 comment signs automatically put by Vim . 我注意到Vim将python的注释符号自动放到我的文件中时,像素消失了,因为它无法显示整个文件。
    2. 依赖于 至少OS/X Leopard。

    自变量

    1. 独立于文件 :在VIM编辑的所有文件中发生
    2. line independent :在没有注释和空行的python代码中发生
    3. .VIMRC独立 :空时发生。vimrc
    4. .screenrc独立 :空时发生。screenrc
    5. 壳独立 :与bash和zsh一起发生
    6. Screen version independent :与Leopard的默认屏幕和屏幕4.0.3一起发生
    7. 独立于不同的注释字符 :向下滚动时发生,例如,.zshrc,.vimrc和.screenrc

    你怎么能禁用Vim的? default settings ?

    8 回复  |  直到 14 年前
        1
  •  3
  •   rampion    16 年前

    我想问题可能出在你的termcap和terminfo设置上。尝试从屏幕rc中注释这些内容,然后重新启动屏幕。

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

    啊, 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
    

    如果问题仍然存在,那么问题可能就在您的外壳中。但如果这样可以解决问题,我建议您将 ~/.vimrc 帮助进一步诊断。

        2
  •  2
  •   Doug    16 年前

    我认为OSX默认版本的屏幕不支持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
  •   Léo Léopold Hertz 준영    16 年前

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

    缺陷的识别

    1. 独立于文件 :在VIM编辑的所有文件中发生

    “停滞”似乎主要发生在评论行和空行中。 然而,这个bug也没有注释和空行,但是它的影响似乎要小得多。

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

        4
  •  2
  •   rssvihla    14 年前

    我遇到了这个问题(只是速度很慢),最终它成为了我在terminal.app和iterm中使用的consolas字体。在我的情况下,切换到摩纳哥大大加快了事情。

        5
  •  1
  •   Peter    16 年前

    症结动作: 这个错误似乎是因为Vim的一些默认选项导致了这个问题。

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

    这只虫子看起来很轻。 依赖于注释和空行 . 我有证据。

    我的python代码中没有注释和空行。然而,我注意到,当vim不能显示完整的行时,它会在我的代码中添加注释标记。例如,注意Vim放在那里的三个标记。

    这导致像素消失。

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


    当我看不到VIM自动放置的注释符号时,这个bug似乎出现在同一个文件中。

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

    我故意复制了图片的代码,这样你就可以清楚地看到分解的像素。

    有一次,当我在玩Python代码时,我注意到“停滞”在代码中放了一行空行之后发生得非常严重。但是,我没有成功地复制事件。


    通过.vimrc解决错误的尝试失败

    1. 禁用VIM自动设置的注释符号

      设置格式选项-=C

        6
  •  1
  •   Todd Gardner    16 年前

    看起来有一些与OS X的环绕模式相关的已知问题,请参见编号1。 here . 这意味着一个解决办法。

        7
  •  1
  •   dbr    16 年前

    我在irssi和bash上也遇到过类似的问题,原因是颜色代码没有正确关闭。

    您是否尝试过不同的VIM主题(特别是默认主题),或者运行 :syntax off ?

        8
  •  0
  •   Léo Léopold Hertz 준영    16 年前

    调试:

    其中一个建议我通过

    ttyctl -f
    

    然而,它似乎并没有解决这个问题。 不过,这可能有助于我们发现这个bug,因为我们现在没有其他应用程序可以改变这种情况。