Çok büyük dosyaları iyi performansla nasıl açabilirim?


27

Boyutu birkaç gigabayt olan sunucu günlüğü dosyalarım var (Ubuntu'da). Onları açmaya çalıştığımda, dosya Vim'e yüklenirken terminal bir dakika kadar kilitleniyor. Bu süreyi azaltmanın bir yolu var mı, örneğin dosyayı talep üzerine yüklemek için Vim ayarlayarak veya başka bir yöntemle?


4
Neden kullanmaz less?
Bernhard

1
Dosyaları herhangi bir şekilde değiştirmek istiyor musunuz, yoksa sadece görüntülemek mi istiyorsunuz?
200_success

1
Dosyaları düzenlemek istiyorum.
peter-b


Büyük olasılıkla siteden sonsuza dek yasaklanacağım ancak şunu söylemeliyim: büyük dosyalarla çalışmak söz konusu olduğunda Emacs bu iş için bir araçtır. :-)
toro2k

Yanıtlar:


25

Öncelikle, eklenti veya vimrc içermeyen vim yüklemeyi deneyin:

vim -u NONE gargantuan.txt

Bu önemli ölçüde daha hızlıysa, muhtemelen vurgulayan, katlayan, eklentileri veya çoğu zaman alan başka bir şeyi vurgulayan sözdiziminiz vardır. Suçlu bulana kadar vimrc'inde (ve eklentilerini etkisizleştirerek) eşyaları kapatmayı dene.

Ayrıca emin olun set ft= syn=ve syntax off.

Bu işe yaramazsa, muhtemelen soruna neden olan çok uzun çizgileriniz söz konusudur . set nowrapSatır kaydırmayı kapatmayı deneyin .


1
vim -U NONE -N gargantuan.txtnocompatibleeski "vi" ile uyumlu olmaya çalışmak yerine "vi iMproved" modunda çalışan vim çalışırken aynı şeyi yapacak
ecerulm

15

Vim, iş için yanlış bir araçtır: moreveya gibi bir çağrı cihazı kullanmalısınız less.

Bir editör kullanmakta ısrar ediyorsanız , Vim wiki'den uyarlanmış bu örneği deneyin :

augroup LargeFile
        let g:large_file = 10485760 " 10MB

        " Set options:
        "   eventignore+=FileType (no syntax highlighting etc
        "   assumes FileType always on)
        "   noswapfile (save copy of file)
        "   bufhidden=unload (save memory when other file is viewed)
        "   buftype=nowritefile (is read-only)
        "   undolevels=-1 (no undo possible)
        au BufReadPre *
                \ let f=expand("<afile>") |
                \ if getfsize(f) > g:large_file |
                        \ set eventignore+=FileType |
                        \ setlocal noswapfile bufhidden=unload buftype=nowrite undolevels=-1 |
                \ else |
                        \ set eventignore-=FileType |
                \ endif
augroup END

Can lessya moreda benim dosyada değişiklik yapmak?
Martin Tournoij

3
Elbette yapamazlar. Günlüklerin düzenlenmesi amaçlanmamıştır.
romainl

5
sed bu amaç için icat edildi. Hangi değişiklikleri yapmak istediğinizi, yerine koyma olarak ifade sededip, bunları gerçekleştirmek için koşulduğunu anlıyorsunuz . Bu aynı zamanda akışlar üzerinde de çalışır (yani üretildiği için sonu olmayan dosya içeriği).
reinierpost

Ben başka ad var less, moreve manhiç vimpager. github.com/rkitover/vimpager
Alex Kroll

5

LargeFile.vim eklentisi, büyük dosyaların daha hızlı düzenlenmesini sağlamak için tasarlanmıştır. Bkz http://www.drchip.org/astronaut/vim/index.html#LARGEFILE .

Sayfadan:

Olayları kapatma, geri alma, sözdizimi vurgulama vb. Gibi büyük dosyaların daha hızlı düzenlenmesini sağlar (varsayılan: 100MB + "büyüktür"). Ayrıca, vim.sf.net adresinde de bulunabilir.

Kılavuza göre, eklenti sadece kurulu olması ile çalışır. g:LargeFileVarsayılanı 20 MB olarak belirten bir MB tamsayı sayısına değiştirerek kesmeyi ayarlayabilirsiniz (100 yazan proje açıklamasının aksine)

Eklenti komutlar sağlar :UnLarge, :Largeve :Large!sırasıyla anda yüklü dosya üzerinde (küçük dosyalar için) devre dışı, yeniden etkinleştirmek veya kuvvet olanak sağlar.


2

Sözdizimi vurgulamanın kapatılmasının yardımcı olabileceğini duydum:

:syntax off

Herhangi bir katlama özelliğini etkinleştirmek de büyük bir etkiye sahiptir
craigp

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.