Що станеться, якщо я використовую vi для великих файлів?


16

Незважаючи на те, що нам не доручили, мій колега використовував vi для перегляду великого текстового файлу (server.log 3,5 ГБ). Це заповнило / var / tmp і спричинило деякі проблеми на сервері.

Що це спричинило? Чому ми не повинні використовувати vi для великих файлів?


3
vi(або vimз цього приводу) прокляте повільно для великих файлів і може бути навіть непридатним, якщо не так багато кінців рядків. Крім того, файл повинен вміститися в пам'яті. Використовуйте lessдля великих файлів, це набагато швидше і часто достатньо для читання / перегляду файлів журналів.
Марко

@Marco Чому б не поставити це як відповідь?
Бернхард

1
оскільки це не відповідь на питання, а коментар, питання: "Що це спричинило? Чому ми не повинні використовувати vi для великих файлів?"
Ківі

подивіться на коментар з моєю відповіддю.
rɑːdʒɑ

Відповіді:


7

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

Якщо в каталозі / var / tmp недостатньо місця для буфера редагування (наприклад, ви працюєте з великим файлом, або в системі не вистачає місця

інколи ви можете отримати таке повідомлення про помилку, як і це

Not enough space in /var/tmp.

Про те, як це виправити, ви можете прочитати тут: http://kb.iu.edu/data/akqv.html


"буферу для редагування vi потрібен простір, рівний приблизно вдвічі більше розміру файлу, з яким ви працюєте" Джерело?
атрипати

1
давно я читав з kb.iu.edu/data/akqv.html . тому я дав вам це
rɑːdʒɑ

20

Vim не був розроблений для великих файлів. Він має певні особливості, які різко уповільнюють користувацький досвід. Наприклад, він завантажує файл у пам'ять, що в основному обмежує редагування файлів, менших за розмір пам'яті. Крім того, такі функції, як підсвічування синтаксису, файл підкачки та скасування, дуже неефективні з великими файлами та ще більше сповільнюють роботу. Інше питання полягає в тому, що vimочікують не надто довгі рядки. Якщо файл містить кілька символів нового рядкаvim стає непридатним.

Це сказало, є плагіни , такі як VIM-largefile , що зміни певні параметри , щоб бути більш ефективними з великими файлами, але в кінці кінців , vimніколи не буде миттєвою , коли ви кидаєте кілька планок на нього.

Суть полягає в тому, що не використовуйте vimдля великих файлів. Якщо ви хочете переглянути (на відміну від редагування) великих файлів, використовуйте less. Якщо ви хочете шукати шаблон, додайте нахил для початку пошуку шаблону:

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

Якщо ви хочете відфільтрувати вихід, використовуйте амперсанд:

&<pattern>

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

Для редагування великих файлів використовують такі інструменти, як sedвони ефективні і призначені саме для цієї мети.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.