Что произойдет, если я использую vi на больших файлах?

16

Хотя нам было приказано не делать этого, мой коллега использовал vi для просмотра большого текстового файла (server.log 3,5 ГБ). Это заполнило / var / tmp и вызвало некоторые проблемы на сервере.

Что вызвало это? Почему бы нам не использовать vi для больших файлов?

atripathi
источник
3
vi(или vimв этом отношении) чертовски медленно работает с большими файлами и может даже оказаться непригодным для использования, если не слишком много концов строк. Кроме того, файл должен уместиться в памяти. Используйте lessдля больших файлов, это намного быстрее и часто достаточно для чтения / просмотра файлов журнала.
Марко
@ Марко Почему бы не поставить это как ответ?
Бернхард
1
потому что это не ответ на вопрос, а комментарий, вопрос: «Что вызвало это? Почему бы нам не использовать vi для больших файлов?»
Киви
посмотрите на комментарий с моим ответом.
2013 года

Ответы:

7

Каталогу по умолчанию (/ var / tmp) для буфера редактирования vi требуется пространство, равное примерно вдвое размеру файла, с которым вы работаете, потому что vi использует дополнительные строки для работы с буфером.

Если в каталоге / var / tmp недостаточно места для буфера редактирования (например, вы работаете с большим файлом или системе не хватает места

иногда вы можете получить следующее сообщение об ошибке, как это также

Not enough space in /var/tmp.

Вы можете прочитать о том, как это исправить здесь: http://kb.iu.edu/data/akqv.html

rɑːdʒɑ
источник
msgstr "В буфере для редактирования vi требуется пространство, примерно в два раза превышающее размер файла, с которым вы работаете" Source?
Атрипати
1
я давно прочитал с kb.iu.edu/data/akqv.html . так что я дал его тебе
rʒɑdʒɑ
20

Vim не был предназначен для больших файлов. У этого есть определенные особенности, которые резко замедляют пользовательский опыт. Например, он загружает файл в память, что в основном ограничивает редактирование файлов, размер которых меньше размера вашей памяти. Более того, такие функции, как подсветка синтаксиса, файл подкачки и отмена, очень неэффективны с большими файлами и еще больше замедляют работу. Другая проблема заключается в том, что vimожидаются не слишком длинные очереди. Если файл содержит несколько символов новой строки, vimстановится непригодным для использования.

Тем не менее, есть плагины, как vim-largefile, которые изменяют определенные параметры, чтобы быть более эффективными с большими файлами, но, в конце концов vim, никогда не будут быстрыми, если вы добавите в него несколько GiB.

Суть в том, что не используйте vimбольшие файлы. Если вы хотите просматривать (в отличие от редактирования) большие файлы, используйте less. Если вы хотите найти шаблон, используйте косую черту, чтобы начать поиск шаблона:

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

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

&<pattern>

Затем начните непрерывный вывод, используя shift-f . Вы можете выйти из режима непрерывного вывода с помощью ctrl-cи уточнить или отменить шаблон фильтра или начать поиск.

Для редактирования больших файлов используйте такие инструменты, как sed, они эффективны и предназначены именно для этой цели.

Marco
источник