Vim 最大可以打开多大的文件(流畅操作)? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Mark24
V2EX    问与答

Vim 最大可以打开多大的文件(流畅操作)?

  •  1
     
  •   Mark24 2016-02-23 17:00:13 +08:00 14978 次点击
    这是一个创建于 3522 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天拿到一份 90M 的数据做试验, JSON 纯文本,用 Sublime 打开,需要 10s 吧(我是 SSD )然后,进行一个全选复制就奔溃掉了
    find 操作,很迟钝,但是可以用
    切换文件类似为 JSON ,界面奔溃,无法完成
    插件,优化格式,界面奔溃

    同样,想把数据导入客户端,粘贴的形式,数据库客户端崩溃掉了

    最后命令行, 5 秒导入 30w 左右的数据

    艾玛,最后还是命令行是王道

    那么问题来了, Vim 这种,能承受的文件大小是多大?

    我觉得我要去学 Vim 了。一旦数据量大,好像还是经久不衰的化石编辑器, Diao 一点

    12 条回复    2021-02-28 13:50:11 +08:00
    SpicyCat
        1
    SpicyCat  
       2016-02-23 17:11:54 +08:00   2
    如果你只是想处理大文件的话,不必专门学 vim ,当然了解下 vim 的基本操作也不是坏事。
    参看这个答案: http://superuser.com/questions/346510/can-i-use-vim-to-open-a-huge-file-effectively
    使用 less 更有效率。
    如果想用 vim 打开大文件,可以先看看这个配置,能使 vim 打开大文件更有效率
    http://vim.wikia.com/wiki/Faster_loading_of_large_files

    如果大文件有非常非常长的行,比如 100M 的文件,只有一行,那么用 vim 打开可能有问题。
    参看 http://unix.stackexchange.com/questions/139254/why-cant-vim-open-a-100-mb-text-file-when-i-have-16-gb-ram
    morefreeze
        2
    morefreeze  
       2016-02-23 18:08:29 +08:00
    这个和你 vim 开的插件也有关,裸的话应该也好测试。

    但我想说的和 1 楼一样,你如果为了修改大文件,可以尝试用 awk,sed 或者切分小文件来合并,来解决。
    xpsair
        3
    xpsair  
       2016-02-23 18:23:12 +08:00
    VIM 打开过单个大小将近 1GB 的 .txt ,表示需要等几秒,然后就跟开几 MB 大小的 .txt 没什么差异了。

    当然,是用的服务器……
    knightdf
        4
    knightdf  
       2016-02-23 18:24:27 +08:00
    vim 服务器上 1 , 2 个 G 的日志随便开.....
    lobee90
        5
    lobee90  
       2016-02-23 18:30:16 +08:00
    @knightdf Emacs 表示不服!!!
    默认情况,Emacs 打开打超过 10MB 文件会收到警告信息:"File foo.bar is large (XX.XM), really open?"
    以通过设置`large-file-warning-threshold`的值,来改变产生警告的阀值.推荐将该值设为 100MB 左右
    如果把该变量设为 nil,这表示不管打开的文件有多大,永远不会产生这种警告.
    tracyone
        6
    tracyone  
       2016-02-23 18:40:05 +08:00
    其实这种大体积文件一般是日志文件,要查找难道不是 grep,sed,awk,ag,awk 这些命令?
    knightdf
        7
    knightdf  
       2016-02-23 19:13:45 +08:00
    @lobee90 不说了, less 赢了
    chemzqm
        8
    chemzqm  
       2016-02-23 19:16:32 +08:00
    这种情况,你需要的是 sed
    对, sed 就是编辑器,文件几个 G 都没问题!
    6david9
        9
    6david9  
       2016-02-23 22:13:38 +08:00
    以前用 vim 看日志,打开过 1g+ 的文件,但是内存占用要超过文件大小。要是必须用编辑器打开大文件,可以试试 joe ,大文件不是一次加载进内存的。 emacs 操作风格
    hronro
        10
    hronro  
       2016-02-24 00:21:49 +08:00
    求一个 90M 的 JSON 文件做测试
    wittyfox
        11
    wittyfox  
       2016-02-24 10:57:46 +08:00 via Android
    我这不 vim 咋 1 万行就不行了。
    qiuhang
        12
    qiuhang  
       2021-02-28 13:50:11 +08:00
    @hronro 你自己写个简单的循环,随机生成不就好了。别说 90M,900M 、9000M 都是小意思。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2958 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 13:45 PVG 21:45 LAX 06:45 JFK 09:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86