为什么当我在下面插入一条大线时,vim使用了99%的CPU?

2024-04-28 19:58:35 发布

您现在位置:Python中文网/ 问答频道 /正文

当我尝试在一个Python文件中使用o在vim中插入下面的代码时,该文件在一行中包含一个大字典,下面的第3行,我的终端窗口挂起,CPU使用率达到99%

我有一个类似于以下内容的Python测试文件:

1 from library import module
2 
3 DICT = { <3000-6000 character dictionary on a single line> }
4 KEY = "examplekey"
5 
6 def test_func_on_dict():
7    expected_output = 42
8    output = module.call_function(DICT, KEY)
9    assert output == expected_output

当我在第5行输入o时,CPU峰值达到99%,我无法与文件交互。如果删除大型单行字典,vim的速度将恢复正常

Vim最大的优点之一是编辑速度快,这让我很快就感到恼火。我看到了关于分析vim的“How to find what slows down vim?”,但我的问题在于插入,而不是加载时间。我正在使用vim-plug

My.vimrc看起来像这样:

call plug#begin('~/.vim/plugged')
Plug 'junegunn/seoul256.vim'
Plug 'junegunn/goyo.vim'
Plug 'junegunn/limelight.vim'
Plug 'beautify-web/js-beautify'
Plug 'vimwiki/vimwiki'
call plug#end()

99.8是htop中的CPU百分比:

enter image description here

有人建议我的问题应该结束,因为它类似于“Why is pasting a long one-liner very slow in Vim's insert mode?”。我不认为建议帖子回答了我的问题,因为我的长线,大字典,已经存在于文件中了vim粘贴速度不慢。vim粘贴速度慢。o插入长线下方。我认为这个问题有一点是需要时间重新绘制“Why is pasting a long one-liner very slow in Vim's insert mode?”中提到的所有内容,但我还没有看到问题的明显解决办法

将字典扩展到多行可以解决这个问题。值得注意的是,在:set paste模式下,oinsert命令在单行上的大dict下面没有速度问题。此外,无论是在视觉模式还是粘贴模式下,当光标位于大dict上方并且按下o时,都不会出现问题。然而,我也感兴趣的是为什么会发生这种情况,而不仅仅是修复方法是什么


Tags: 文件output粘贴模式vimcpucall速度
1条回答
网友
1楼 · 发布于 2024-04-28 19:58:35

正如更新中介绍的那样,解决方案是避免出现大量的长线

我会说,为了可读性而将dict分成几行,这甚至是糟糕的编程实践而不是

但这肯定会影响Vim的表现。我有一个大约500行500列的CSV文件,我仍然可以以合理的性能进行编辑。然而,我怀疑将所有线路连接在一起会导致您看到的相同问题

相关问题 更多 >