非常に大きなファイルを良好なパフォーマンスで開くにはどうすればよいですか?


27

サイズが数ギガバイトのサーバーログファイルがあります(Ubuntu上)。ファイルを開こうとすると、ファイルがVimにロードされている間、端末が1分ほどロックします。たとえば、Vimをオンデマンドでファイルをロードするように設定したり、他の方法でこの時間を短縮する方法はありますか?


4
なぜ使用しないのlessですか?
ベルンハルト

1
ファイルを何らかの方法で操作するつもりですか、それとも単に表示するだけですか?
200_success

1
ファイルを編集したいと思います。
ピーターb


恐らく私はサイトから永久に追放されるでしょうが、私はそれを言わなければなりません:巨大なファイルを扱うことになると、Emacsは仕事のためのツールです。:-)
toro2k

回答:


25

最初に、プラグインやvimrcなしでvimをロードしてみてください:

vim -u NONE gargantuan.txt

これが大幅に高速である場合は、おそらく構文の強調表示、折りたたみ、プラグイン、またはその他の処理がほとんどの時間を占めています。原因を見つけるまで、vimrcの機能をオフにして(プラグインを無効にして)ください。

また、を確認しset ft= syn=てくださいsyntax off

これで解決しない場合は、問題の原因となっている非常に長いがある可能性があります。set nowrap行の折り返しをオフにしてみてください。


1
vim -U NONE -N gargantuan.txtvimのnocompatible実行中に、古い「vi」と互換性を保とうとするのではなく、「vi iMproved」モードで実行するのと同じことを行います
-ecerulm

15

Vimはこのジョブにとっては間違ったツールです。moreまたはなどのページャーを使用する必要がありますless

エディターの使用を主張する場合は、Vim wikiから適応したこの例を試してください:

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

することができますlessmoreまた、私のファイルに変更を加えますか?
マーティントゥルノイ

3
もちろんできません。ログは編集するためのものではありません。
ロメイン

5
sedはこの目的のために考案されました。どの変更を行いたいかを判断し、置換として表した後、実行sedして実行します。これは、ストリーム(つまり、制作中のため終わりのないファイルコンテンツ)でも機能します。
reinierpost

とにエイリアスlessを作成moremanましたvimpagergithub.com/rkitover/vimpager
アレックスクロール

5

LargeFile.vimプラグインは、大きなファイルの編集を高速化するように設計されています。http://www.drchip.org/astronaut/vim/index.html#LARGEFILEを参照してください

ページから:

イベント、元に戻す、構文の強調表示などをオフにしますが、大きなファイル(デフォルト:100MB +は「大」)をより迅速に編集できます。vim.sf.netでもランク付けできます。

マニュアルによると、プラグインはインストールするだけで機能します。カットオフを設定するにはg:LargeFile、をMBの整数に変更します。これは、デフォルトの20MBを示しています(プロジェクトの説明では100を示しています)。

プラグインは、現在ロードされているファイルに対して、それぞれコマンド:UnLarge:Largeおよび:Large!無効化、再有効化、または強制的に有効化(小さなファイルの場合)を提供します。


2

構文の強調表示をオフにすると役立つと聞いたことがあります。

:syntax off

あらゆる種類の折りたたみを有効にすると、大きな効果があります
-craigp

0

あなたが試してみたいかもしれない別のページャーはmost次のとおりです:http : //www.jedsoft.org/most/

また、ログをローテーションします。これにより、ログのサイズが小さくなります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.