Могу ли я использовать vim для эффективного открытия огромного файла?

17

Иногда мне нужно открыть файл журнала размером в несколько ГБ, теперь мне нужно использовать tail, чтобы получить подходящую деталь, но это очень утомительно.

Могу ли я использовать Vim, чтобы открыть его напрямую? В настоящее время vim будет занимать много памяти при открытии большого файла ... Просто интересно, зачем это нужно? Если какой-то параметр может предотвратить загрузку этой памяти?

Карфилд Йим
источник

Ответы:

13

Если вы просто хотите посмотреть на файл, используйте меньше .

Если вам нужно вырезать определенную часть файла, сделайте это (в пределах меньше ):

  1. Перейти на первую страницу, которая вас интересует

  2. Нажмите клавиши mи a- это означает: отметьте положение a .

  3. Перейти к последней позиции интересующего вас файла

  4. Нажмите клавиши |(труба) и a- это значит: все, что здесь находится между трубкой, поместите a в команду

  5. Введите команду, в которую хотите отправить данные. Если вы хотите скопировать эти данные в буфер редактора, просто используйте vim -команду as (знак минуса в качестве имени файла означает, что файл, который нужно отредактировать, должен быть прочитан из stdin ).

Если вы знаете, что вам понадобятся все данные от определенной позиции до конца файла, вы также можете сделать это:

  1. Перейти на первую страницу, которая вас интересует

  2. Нажмите клавиши |(труба) и $- это значит: передать все между концом и концом файла в команду

  3. Введите команду, в которую хотите отправить данные (например, cat >/tmp/myfileили vim -).

КТФ
источник
1
Я не знал, lessмог сделать это. Спасибо :)
ледяной воды
4

Проверьте это и это .

В основном, ваши варианты:

  1. Попробуйте скрипт Vim Large File . Он отключает определенные функции, чтобы улучшить отзывчивость Vim при редактировании больших файлов.
  2. Разбейте файл на более мелкие фрагменты, отредактируйте интересующий вас фрагмент и объедините их вместе.
Дэн Круз
источник
3

Да, Vim может открывать очень большие файлы. Но, чтобы сохранить память о некоторых вещах, вы, вероятно, должны иметь в виду, прежде чем сделать это:

  • игнорировать тип файла (без подсветки синтаксиса и т. д.), хотя, по всей вероятности, у него вообще не будет подсветки синтаксиса для файлов журналов, но просто чтобы быть уверенным, что он не начнет проходить через них
  • noswapfile (вам определенно не нужна копия файла такого размера)
  • bufhidden = unload (сохранить память при просмотре другого файла)
  • buftype = nowritefile (только для чтения)
  • undolevels = -1 (отмена невозможна)

Может быть, есть вариант или два, которые я пропустил, но они так далеко в моем _vimrc.

ладья
источник
Обратите внимание, что (1) есть плагин ( vim.org/scripts/script.php?script_id=1506 ) для автоматического включения некоторых из этих параметров при открытии большого файла, и (2) даже с этой программой, открывающие файлы, которые Если их размер превышает пару ГБ, они все еще могут быть проблематичными, поэтому я рекомендую следовать совету «Ctrl-C» здесь: stackoverflow.com/a/19795855/1858225
Кайл Стрэнд,