为什么vim';s delete命令太慢了
我有一个包含大约5000行的文件,我想删除所有包含“some_string”的行,所以我首先搜索为什么vim';s delete命令太慢了,vim,Vim,我有一个包含大约5000行的文件,我想删除所有包含“some_string”的行,所以我首先搜索/some_string,然后执行:g//d。删除约90%的行需要5分钟以上的时间。有什么好处 相比之下,如果我运行sed-I'/some\u string/d'some\u file需要46毫秒。在命令中添加下划线 我遇到了类似的问题,结果是每一行都被复制到了我的系统剪贴板上。通过添加一个\uu,您可以告诉vim使用黑洞寄存器 :g//d_ 帮助提供了的以下语法:d :[range]d[elete
/some_string
,然后执行:g//d
。删除约90%的行需要5分钟以上的时间。有什么好处
相比之下,如果我运行
sed-I'/some\u string/d'some\u file
需要46毫秒。在命令中添加下划线
我遇到了类似的问题,结果是每一行都被复制到了我的系统剪贴板上。通过添加一个\uu
,您可以告诉vim使用黑洞寄存器
:g//d_
帮助提供了的以下语法:d
:[range]d[elete] [x] Delete [range] lines (default: current line) [into register x].
:[range]d[elete][x]删除[range]行(默认值:当前行)[进入寄存器x]。
我只是拿了一个180000行的文件,然后运行了一个类似的命令。在不到0.1秒的时间内,3170条线路在一瞬间被删除。我相信您的问题不在于vim。当您在没有
.vimrc
文件的情况下运行vim时,是否会发生同样的问题?您的某些字符串是否包含任何特殊字符?也许这不是一个简单的模式。有关vim的正则表达式语言与其他语言的区别,请参见:help magic
。