51

自从我上次注销并重新登录以来,我在使用 vim 以及其他不相关的程序时遇到了非常缓慢的启动时间。以下是 vim 的启动时间日志:

> times in msec  clock   self+sourced   self:  sourced script  clock  
> elapsed:              other lines
> 
> 000.005  000.005: --- VIM STARTING ---
> 000.073  000.068: Allocated generic buffers
> 000.168  000.095: locale set
> 000.180  000.012: GUI prepared
> 000.181  000.001: clipboard setup
> 000.188  000.007: window checked
> 000.621  000.433: inits 1
> 000.626  000.005: parsing arguments
> 000.627  000.001: expanding arguments
> 000.637  000.010: shell init
> 000.909  000.272: Termcap init
> 000.942  000.033: inits 2
> 001.031  000.089: init highlight
> 023.418  000.234  000.234: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/syntax/syncolor.vim
> 023.543  001.811  001.577: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/syntax/synload.vim
> 044.397  015.231  015.231: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/filetype.vim
> 044.449  025.111  008.069: sourcing /grid/common/pkgs/vim/latest/share/vim/vim73/syntax/syntax.vim
> 052.532  000.199  000.199: sourcing /grid/common/pkgsData/vim-v7.3/Linux/RHEL4.0-2007-x86_64/share/vim/vim73/syntax/nosyntax.vim
> 059.858  000.175  000.175: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/syntax/syncolor.vim
> 059.966  003.842  003.667: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/syntax/synload.vim
> 060.002  010.259  006.218: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/syntax/syntax.vim
> 069.085  000.178  000.178: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/syntax/syncolor.vim
> 072.326  000.173  000.173: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/syntax/syncolor.vim
> 076.317  000.175  000.175: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/syntax/syncolor.vim
> 076.477  013.311  012.785: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/colors/desert.vim
> 079.768  000.019  000.019: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/filetype.vim
> 080.322  065.921  017.221: sourcing $HOME/.vimrc
> 080.330  013.378: sourcing vimrc file(s)
> 106.526  000.376  000.376: sourcing /home/haitham/.vim/plugin/genutils.vim
> 111.139  001.435  001.435: sourcing /home/haitham/.vim/plugin/multiselect.vim
> 113.534  000.147  000.147: sourcing /home/haitham/.vim/plugin/omap-param.vim
> 119.245  000.073  000.073: sourcing /home/haitham/.vim/plugin/qfixtoggle.vim
> 122.821  000.696  000.696: sourcing /home/haitham/.vim/plugin/surround.vim
> 172.247  000.098  000.098: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/plugin/getscriptPlugin.vim
> 176.387  000.252  000.252: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/plugin/gzip.vim
> 179.876  000.183  000.183: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/plugin/matchparen.vim
> 182.748  000.620  000.620: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/plugin/netrwPlugin.vim
> 186.171  000.051  000.051: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/plugin/rrhelper.vim
> 189.739  000.046  000.046: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/plugin/spellfile.vim
> 193.406  000.195  000.195: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/plugin/tarPlugin.vim
> 199.206  000.060  000.060: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/plugin/tohtml.vim
> 202.299  000.152  000.152: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/plugin/vimballPlugin.vim
> 205.345  000.147  000.147: sourcing /grid/common/pkgs/vim/v7.3/share/vim/vim73/plugin/zipPlugin.vim
> 205.394  120.533: loading plugins
> 12343.581  12138.187: inits 3
> 12349.592  006.011: reading viminfo
> 18421.239  6071.647: setup clipboard
> 18421.264  000.025: setting raw mode
> 18421.270  000.006: start termcap
> 18421.293  000.023: clearing screen
> 18421.504  000.211: opening buffers
> 18421.564  000.060: BufEnter autocommands
> 18421.566  000.002: editing files in windows
> 18425.833  004.267: VimEnter autocommands
> 18425.835  000.002: before starting main loop
> 18426.587  000.752: first screen update
> 18428.334  001.747: --- VIM STARTED ---

显然最大的组件是“inits 3”和“设置剪贴板”。

任何线索该怎么做?

4

2 回答 2

110

设置剪贴板

首先,尝试使用以下命令运行 Vim:

$ vim -X

您可以尝试将这些-X --startuptime <file>选项一起使用,以查看“设置剪贴板”组件是否仍然很慢。

如果-X有帮助,您可以通过将以下行添加到您的 vimrc 文件来获得相同的效果:

set clipboard=exclude:.*

解释

如果这有帮助,那么正在发生的事情是在启动时 Vim 试图连接到 X 服务器以允许它使用剪贴板。该-X选项告诉 Vim 不要尝试连接到 X 服务器。从:help -X

-X          Do not try connecting to the X server to get the current
            window title and copy/paste using the X clipboard.  This
            avoids a long startup time when running Vim in a terminal
            emulator and the connection to the X server is slow.
            See --startuptime to find out if affects you.
            Only makes a difference on Unix or VMS, when compiled with the
            +X11 feature.  Otherwise it's ignored.
            To disable the connection only for specific terminals, see the
            'clipboard' option.
            When the X11 Session Management Protocol (XSMP) handler has
            been built in, the -X option also disables that connection as
            it, too, may have undesirable delays.

剪贴板选项可用于通过您的 vimrc 文件更永久地实现相同的目的。从:help 'clipboard'

要从不连接到 X 服务器,请使用: exclude:.* 这与使用 -X 参数的效果相同。请注意,当没有连接到 X 服务器时,窗口标题将不会恢复,剪贴板也无法访问。

clipboard=exclude:.*如果您希望 Vim 在某些情况下连接到 X 服务器,可以将该选项细化为仅适用于特定终端。查看:help 'clipboard'更多关于此的信息。

对我来说,这个问题正在发生,因为我在我的 ssh 客户端上启用了“X11 转发”,但并不总是在 ssh 客户端机器上运行 X 服务器。

当我在目标机器上运行 X 服务器时,Vim 的启动速度要快得多(尽管还是有点慢)。

在这个设置中,我想维护 X11 Forwarding,但不需要 Vim 来使用 X 剪贴板,所以我在set clipboard=exclude:.*我的 vimrc 中添加了该行。现在 Vim 启动对我来说又快了。

初始 3

您似乎已经通过尝试消除了您的插件/自定义作为可能的原因vim -u NONE(并且您说您的 vimrc 是空的)。

我不熟悉这个问题,但如上所述,它可能与您的 viminfo 文件有关。

您可以通过使用以下命令启动 Vim 来确定是否是这种情况:

$ vim -i NONE

根据:help slow-start

如果您启用了“viminfo”,加载 viminfo 文件可能需要一段时间。您可以通过暂时禁用 viminfo 来确定这是否是问题(使用 Vim 参数“-i NONE”)。尝试使用 ":set viminfo='20,<50,s10" 减少存储在寄存器中的行数。

于 2013-07-18T09:25:35.333 回答
3

我正在使用 v7.4。使用 +clipboard 编译 vim 时,-X 选项会成功增加启动时间。但是,由于现在禁用了与 X 的连接,我们不能再从 x 剪贴板复制和粘贴。

同时,vim 是我在发送到电子邮件、推特、电报等之前唯一的编写方式。所以从 vim 复制+粘贴是必须的。刚刚找到了简单的解决方案:

别名 v='nvim'

Nvim.vimrc自动使用我的旧版本。剪贴板功能无缝工作,没有任何配置麻烦。

不会激怒使用 nvim。我刚刚发现它是我现在问题的最短解决方案。

于 2019-11-21T03:43:15.443 回答