16

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

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

3 ответа3

13

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

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

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

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

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

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

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

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

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

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

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

3

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .