サイズが数ギガバイトのサーバーログファイルがあります(Ubuntu上)。ファイルを開こうとすると、ファイルがVimにロードされている間、端末が1分ほどロックします。たとえば、Vimをオンデマンドでファイルをロードするように設定したり、他の方法でこの時間を短縮する方法はありますか?
サイズが数ギガバイトのサーバーログファイルがあります(Ubuntu上)。ファイルを開こうとすると、ファイルがVimにロードされている間、端末が1分ほどロックします。たとえば、Vimをオンデマンドでファイルをロードするように設定したり、他の方法でこの時間を短縮する方法はありますか?
回答:
最初に、プラグインやvimrcなしでvimをロードしてみてください:
vim -u NONE gargantuan.txt
これが大幅に高速である場合は、おそらく構文の強調表示、折りたたみ、プラグイン、またはその他の処理がほとんどの時間を占めています。原因を見つけるまで、vimrcの機能をオフにして(プラグインを無効にして)ください。
また、を確認しset ft= syn=
てくださいsyntax off
。
これで解決しない場合は、問題の原因となっている非常に長い行がある可能性があります。set nowrap
行の折り返しをオフにしてみてください。
vim -U NONE -N gargantuan.txt
vimのnocompatible
実行中に、古い「vi」と互換性を保とうとするのではなく、「vi iMproved」モードで実行するのと同じことを行います
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
less
かmore
また、私のファイルに変更を加えますか?
sed
して実行します。これは、ストリーム(つまり、制作中のため終わりのないファイルコンテンツ)でも機能します。
LargeFile.vimプラグインは、大きなファイルの編集を高速化するように設計されています。http://www.drchip.org/astronaut/vim/index.html#LARGEFILEを参照してください。
ページから:
イベント、元に戻す、構文の強調表示などをオフにしますが、大きなファイル(デフォルト:100MB +は「大」)をより迅速に編集できます。vim.sf.netでもランク付けできます。
マニュアルによると、プラグインはインストールするだけで機能します。カットオフを設定するにはg:LargeFile
、をMBの整数に変更します。これは、デフォルトの20MBを示しています(プロジェクトの説明では100を示しています)。
プラグインは、現在ロードされているファイルに対して、それぞれコマンド:UnLarge
、:Large
および:Large!
無効化、再有効化、または強制的に有効化(小さなファイルの場合)を提供します。
あなたが試してみたいかもしれない別のページャーはmost
次のとおりです:http :
//www.jedsoft.org/most/
また、ログをローテーションします。これにより、ログのサイズが小さくなります。
less
ですか?