vimを使用して、巨大なファイルを効果的に開くことはできますか?


17

数GBのログファイルを開く必要がある場合がありますが、適切な部分を取得するにはtailを使用する必要がありますが、それは非常に面倒です。

vimを使用して直接開くことはできますか?現在、vimは大きなファイルを開くと大量のメモリを占有します...なぜそれが必要なのだろうか?そのメモリがロードされないようにするオプションがある場合は?

回答:


13

ファイルを見たいだけなら、lessを使用してください。

ファイルの特定の部分を切り取る必要がある場合は、以下を実行します(以内)。

  1. 興味のある最初のページに移動します

  2. キーmを押しますa-これは、位置aをマークすることを意味ます。

  3. 興味のあるファイルの最後の位置に移動します

  4. キー|(パイプ)を押しますa-これは、ここですべてをパイプし、コマンドにaを配置することを意味します

  5. データを送信するコマンドを入力します。このデータをエディターバッファーにコピーする場合はvim -、コマンドとして使用します(ファイル名としてのマイナス記号は、編集するファイルがstdinから読み取られることを意味します)。

特定の位置からファイルの最後までのすべてのデータが必要になることがわかっている場合は、次のこともできます。

  1. 興味のある最初のページに移動します

  2. キー|(パイプ)を押します$-これは、ここからファイルの最後までのすべてをコマンドにパイプすることを意味します

  3. データの送信先のコマンドを入力します(cat >/tmp/myfileまたはvim -)。


1
lessこれができるとは知りませんでした。ありがとう:)
icedwater

4

これこれをチェックしてください。

基本的に、オプションは次のとおりです。

  1. Vim Large Fileスクリプトを試してください。特定の機能を無効にして、大きなファイルを編集するときのVimの応答性を改善します。
  2. ファイルを小さなチャンクに分割し、気になるチャンクを編集し、それらを連結します。

3

はい、Vimは非常に大きなファイルを開くことができます。ただし、メモリを節約するために、保存する前に心に留めておくべきことがいくつかあります。

  • ファイルタイプを無視します(構文の強調表示などはありません)。ただし、すべての場合、ログファイルの構文の高優先度はまったくありませんが、確実に確認するために、ファイルタイプを調べないようにします。
  • noswapfile(間違いなく、そのサイズのファイルのコピーは必要ありません)
  • bufhidden = unload(他のファイルが表示されたときにメモリを節約します)
  • buftype = nowritefile(読み取り専用)
  • undolevels = -1(元に戻すことはできません)

たぶん私が見逃したオプションが2つありますが、これらは私の_vimrcに今のところあります。


(1)大きなファイルが開かれたときにこれらのオプションのいくつかを自動的にオンにするプラグイン(vim.org/scripts/script.php?script_id=1506)があり、(2)このプログラムでも、サイズが数GBを超える場合でも問題が発生する可能性があるため、ここで「Ctrl-C」のヒントに従うことをお勧めします。stackoverflow.com/ a / 19795855/1858225
Kyle Strand 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.