大きなファイルでviを使用するとどうなりますか?


16

指示されていませんでしたが、私の同僚はviを使用して大きなテキストファイル(server.log 3.5 GB)を表示しました。これにより/ var / tmpがいっぱいになり、サーバーで問題が発生しました。

何が原因ですか?大きなファイルにviを使用すべきではないのはなぜですか?


3
vi(またはvimそのことについて)大規模なファイルでは非常に遅く、多くの行末がない場合でも使用できない場合があります。さらに、ファイルはメモリに収まる必要があります。less大きなファイルに使用すると、はるかに高速で、ログファイルの読み取り/監視に十分です。
マルコ

@Marco答えとして挙げてみませんか?
ベルンハルト

1
質問に対する答えではなく、コメントであるため、質問の理由は「これは何が原因ですか。なぜ大きなファイルにviを使用すべきではないのですか?」
キウィ

私の答えでコメントを見てください。
rɑːdʒɑ

回答:


7

vi編集バッファーのデフォルトのディレクトリー(/ var / tmp)には、作業中のファイルのサイズの約2倍に相当するスペースが必要です。viはバッファー操作に余分な行を使用するためです。

/ var / tmpディレクトリーに編集バッファー用の十分なスペースがない場合(例えば、大きなファイルを使用している場合、またはシステムのスペースが不足している場合)

場合によっては、次のようなエラーメッセージも表示されます。

Not enough space in /var/tmp.

これを修正する方法については、http//kb.iu.edu/data/akqv.htmlをご覧ください。


「vi編集バッファーには、作業中のファイルのサイズの約2倍に相当するスペースが必要です」ソース?
atripathi

1
ずっと前にkb.iu.edu/data/akqv.htmlから読みました。だから私はあなたにそれを与えた
rɑːdʒɑ

20

Vimは大きなファイル用に設計されていません。ユーザーエクスペリエンスを大幅に低下させる特定の機能があります。たとえば、ファイルをメモリにロードします。これは基本的に、メモリサイズよりも小さいファイルの編集に制限されます。さらに、構文の強調表示、スワップファイル、元に戻すなどの機能は、大きなファイルでは非常に非効率的であり、処理がさらに遅くなります。もう1つの問題は、vim行が長すぎないことです。ファイルに改行文字vimがほとんど含まれていない場合、使用できなくなります。

そうは言っても、vim-largefileのような特定の設定を変更して大きなファイルをより効率的にするプラグインがありますが、最終的vimに複数のGiBを投げても決してきびきびとはなりません。

一番下の行は、vim大きなファイルには使用しないでください。(編集とは対照的に)大きなファイルを表示する場合は、を使用しますless。パターンを検索する場合は、スラッシュを使用してパターンの検索を開始します。

/<pattern>  # forward search
?<pattern>  # backward search

出力をフィルタリングする場合は、アンパサンドを使用します。

&<pattern>

次に、を使用して連続出力を開始しshift-fます。で連続出力表示を終了し、ctrl-cフィルターパターンを調整またはキャンセルするか、検索を開始できます。

大きなファイルを編集するには、などのツールを使用しますsed。これらは効率的で、まさにこの目的のために設計されています。

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