Чи є редактори, які можуть редагувати багатогігабайтні текстові файли, можливо, завантажуючи одразу лише невеликі частини в пам'ять? Здається, Vim не впорається з цим = (
Чи є редактори, які можуть редагувати багатогігабайтні текстові файли, можливо, завантажуючи одразу лише невеликі частини в пам'ять? Здається, Vim не впорається з цим = (
Відповіді:
Якщо ви на * NIX (і припускаючи , що ви повинні змінити лише частини файлу (і рідко)), ви можете розділити файли ( з допомогою split
команди), редагувати їх по окремості ( з використанням awk
, sed
або що - щось подібне) і зчепити їх після того, як вам зроблені.
cat file2 file3 >> file1
Ctrl-C зупинить завантаження файлу. Якщо файл досить малий, вам, можливо, пощастило завантажити весь вміст і просто вбити будь-які кроки після завантаження. Перевірте, що весь файл завантажено під час використання цієї підказки.
Vim може досить добре обробляти великі файли. Я щойно відредагував файл об'ємом 3,4 ГБ, видалив рядки тощо. Три речі, які слід пам’ятати:
:115355
, ви перейдете безпосередньо до рядка 115355, який набагато швидше переходить до цих великих файлів. Здається, Vim починає сканувати спочатку щоразу, коли він завантажує буфер рядків, а утримуючи Ctrl-F для сканування через файл, схоже, стає дуже повільним наприкінці його.Примітка. Якщо ваш екземпляр Vim знаходиться лише в режимі читання, оскільки ви натискаєте Ctrl-C, можливо, Vim не завантажив весь файл у буфер. Якщо це станеться, збереження збереже лише те, що є в буфері, а не весь файл . Ви можете швидко перевірити, G
щоб перейти до кінця, щоб переконатися, що всі рядки у вашому файлі є.
Можливо, плагіни змушують задихатися. (виділення синтаксису, складки тощо)
Ви можете запустити vim без плагінів.
vim -u "NONE" hugefile.log
Це мінімалістично, але принаймні дасть вам рухи, до яких ви звикли.
syntax off
є ще одним очевидним. Обріжте встановлення та вкажіть те, що вам потрібно. Ви дізнаєтеся, на що він здатний, і якщо вам потрібно виконати завдання за допомогою інших засобів.
Невелике покращення щодо відповіді, яку дає @Al pachio з рішенням split + vim, ви можете читати файли в глобальній галузі, ефективно використовуючи фрагменти файлів як буфер, наприклад
$ split -l 5000 myBigFile
xaa
xab
xac
...
$ vim xa*
#edit the files
:nw #skip forward and write
:n! #skip forward and don't save
:Nw #skip back and write
:N! #skip back and don't save
Ви можете перевірити цей плагін VIM, який відключає певні функції vim в інтересах швидкості при завантаженні великих файлів.
Я намагався це зробити, в основному з файлами розміром близько 1 ГБ, коли мені потрібно було внести невеликі зміни в дамп SQL. Я в Windows, що робить це головним болем. Це серйозно важко.
Очевидне питання - "навіщо це потрібно?" Я можу вам сказати з досвіду, що потрібно спробувати це не раз, ви, мабуть, дуже хочете спробувати знайти інший спосіб.
То як же це зробити? Є кілька способів, як я це зробив. Іноді я можу отримати vim або nano, щоб відкрити файл, і я можу їх використовувати. Це дійсно сильний біль, але він працює.
Якщо це не працює (як у вашому випадку), у вас є лише кілька варіантів. Ви можете написати невелику програму, щоб внести потрібні зміни (наприклад, пошук і заміна). Ви можете використовувати програму командного рядка, яка може це зробити (можливо, це можна зробити за допомогою sed / awk / grep / тощо?)
Якщо вони не працюють, ви завжди можете розділити файл на шматки ( очевидним вибором є щось на зразок спліт , але ви можете скористатися головою / хвостом, щоб отримати потрібну частину), а потім відредагувати потрібну частину, і рекомбінувати пізніше.
Повірте мені, спробуйте знайти інший спосіб.
Я використовую vim 7.3.3 на Win7 x64 із плагіном LargeFile від Charles Campbell для обробки багатогігабайтних текстових файлів. Це працює дуже добре.
Я сподіваюся, що ви прийшли правильно.
Нічого собі, ніколи не вдавалося заставитись vim, щоб задихнутися, навіть з ГБ або двома. Я чув, що UltraEdit (у Windows) та BBEdit (на Mac) ще більше підходять для файлів ще більшого розміру, але я не маю особистого досвіду.
Раніше я відкривав файл із 3 гігами за допомогою цього інструменту http://csved.sjfrancke.nl/
Особисто мені подобається UltraEdit . Ось їх маленький шпиль на великих файлах .