3

Windows の gvim で 200MB のテキスト ファイルを開こうとしていますが、窒息します。vim ウィンドウが開き、空白のまま応答しなくなります。私のシステムには 8GB の RAM があり、メモ帳を使用して約 2 ~ 5 秒でファイルが正常に開きます。

vim での非常に大きなテキスト ファイルの編集に関するこの SO 投稿を見つけ、プラグインをオフにしてファイルを開こうとしました。

vim -u "NONE" my200MBfile.text

しかし、それは役に立ちませんでした。それを機能させるために他にできることはありますか?実際にはそれほど大きなファイルではないものの、私のマシンでvimが窒息するのは奇妙に思えます。

ありがとう!

4

3 に答える 3

7

ほとんどの場合、vim を停止させる構文プラグインです。Mbs-Gbs のファイルで問題が発生したことはありません。私が誤っていくつかの - あまりよくない - ファイルタイプでそれらを開かない限り。

ロード/ハング中に ^C を押します (プラグインの中断)

:syntax off

トリックを行います。完全に「同期された」構文の強調表示なしでファイルを操作しやすくする構文には、他のオプションがあります。


私はこれをもう少しいじってみましたが、実際にプラグインのいくつかが (非常に) 大きなファイルの操作を非常に遅くすることがわかりました. 私は楽しみのためにこれをしました:

大きな入力ファイル (~600Mb) の場合:

$ wc input.txt.full 
  2674568   2674568 608825278 input.txt.full

次の調整を加えて vim を起動しました。

vim -u NONE -n +'se nonu nowrap ul=-1 | syn off' input.txt.full

これに注意してください

  • -u NONE初期化 (ユーザー) スクリプトとプラグインの実行を防止します
  • -nスワップファイルの書き込みを無効にします (低速/小さいディスクでは非常に重要です)
  • se nonu nowrap ul=-1無効にする

    • 行番号付け
    • ラインラッピング
    • 履歴を元に戻す (undolevels負の値に設定)

    基本的に、多くの CPU やメモリを必要とするすべてのもの

  • syn off構文の強調表示を無効にします (ファイルの種類に対して構文の強調表示が有効になっている場合にのみ違いが生じるはずです)。

ここで、行自体の各行を複製したかった (グローバル: 行をコピーし、前のものと結合する):

:g/^/t.|-j

残念ながら、ファイルは使用可能なメモリ (~3Gb) 1に対して大きくなりすぎるため、最初の 20% (~535,000 行) を処理することにしました。

:exec "norm 20%"|1,.g/^/t.|-j

これは「一瞬」で問題なく機能します。手動ナビゲーション(ジャンプ、スクロール、モード切り替え、検索など)は反応が良いようです。

コマンドライン ベンチマーク:

$ xxd -c 44 /dev/urandom | head -n 3800000 >  input.txt.full 
$ wc input.txt.full 
  3800000  91820644 627000000 input.txt.full
$ time vim -u NONE -n +'se nonu nowrap ul=-1 | syn off' input.txt.full +'exec "norm 10%"|1,.g/^/t.|-j' +wq

real    0m7.778s
user    0m6.680s
sys 0m0.952s

$ wc input.txt.full 
  3800000 101002757 689940307 input.txt.full

(注意してください689940307 ÷ 627000000 = 110.03 %、それは正確に正しいです)。

これは私の本では遅くありません。比較のために、wc呼び出し自体 にかかる時間は同じです(7.7 秒)。


1tmpfsキャッシュの違いを避けるためすべてのテストが実行されまし

于 2012-11-14T19:05:52.207 に答える
5

問題は、vim が長い行をあまり好まない可能性が高いです。

json_reformat最初にファイルのようなツールを使用してみてください...

ファイルをそのまま編集する必要がある場合は、問題のファイルを編集する前に試し:syntax off:set nowrapください:edit

于 2012-11-14T18:58:36.610 に答える
2

Vimはそのサイズ(またはそれ以上)のファイルを開くのに問題はありませんが、あなたの場合のように、(そのサイズの)1行だけでファイルを開くという問題があると言われています。

さまざまな回避策を試すことができますが、「適切な仕事に適切なツール」アプローチを採用し、特に大きなファイルの編集用に特別に作成されたテキスト エディターであるEmEditorを試すことをお勧めします。

これは Vim のバッシングではありませんが、Vim は主にソース コードを編集するためのエディターであることに注意してください。その点では優れていますが、他のすべてのツールと同様に、制限があります。

于 2012-11-14T20:40:35.077 に答える