Apakah ada editor yang dapat mengedit file teks multi-gigabyte, mungkin hanya dengan memuat sebagian kecil ke dalam memori sekaligus? Sepertinya Vim tidak bisa mengatasinya = (
Apakah ada editor yang dapat mengedit file teks multi-gigabyte, mungkin hanya dengan memuat sebagian kecil ke dalam memori sekaligus? Sepertinya Vim tidak bisa mengatasinya = (
Jawaban:
Jika Anda berada di * nix (dan dengan asumsi Anda harus memodifikasi hanya bagian file (dan jarang)), Anda dapat membagi file (menggunakan split
perintah), mengedit mereka secara individu (menggunakan awk
, sed
, atau yang serupa) dan menggabungkannya setelah Anda selesai.
cat file2 file3 >> file1
Ctrl-C akan menghentikan pemuatan file. Jika filenya cukup kecil, Anda mungkin beruntung telah memuat semua konten dan mematikan semua langkah pemuatan pos. Verifikasi bahwa seluruh file telah dimuat saat menggunakan tip ini.
Vim dapat menangani file besar dengan cukup baik. Saya baru saja mengedit file 3.4GB, menghapus baris, dll. Tiga hal yang perlu diingat:
:115355
akan membawa Anda langsung ke baris 115355, yang jauh lebih cepat terjadi pada file-file besar itu. Vim tampaknya mulai memindai dari awal setiap kali memuat buffer baris, dan menahan Ctrl-F untuk memindai melalui file tampaknya menjadi sangat lambat di dekat bagian akhirnya.Catatan - Jika instance Vim Anda hanya-baca karena Anda menekan Ctrl-C, mungkin Vim tidak memuat seluruh file ke dalam buffer. Jika itu terjadi, menyimpannya hanya akan menyimpan apa yang ada di buffer, bukan seluruh file . Anda dapat dengan cepat memeriksa dengan G
sampai lompat ke akhir untuk memastikan semua baris di file Anda ada di sana.
Mungkin plugin yang menyebabkannya tersedak. (penyorotan sintaks, lipatan, dll.)
Anda dapat menjalankan vim tanpa plugin.
vim -u "NONE" hugefile.log
Ini minimalis tetapi setidaknya akan memberi Anda gerakan vi yang biasa Anda lakukan.
syntax off
adalah satu lagi yang jelas. Pangkas penginstalan Anda dan dapatkan sumber yang Anda butuhkan. Anda akan mengetahui kemampuannya dan apakah Anda perlu menyelesaikan tugas melalui cara lain.
Sedikit perbaikan pada jawaban yang diberikan oleh @Al pachio dengan solusi split + vim Anda dapat membaca file dengan glob, secara efektif menggunakan potongan file sebagai buffer misalnya
$ 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
Anda mungkin ingin memeriksa plugin VIM ini yang menonaktifkan fitur vim tertentu demi kecepatan saat memuat file besar.
Saya sudah mencoba melakukan itu, kebanyakan dengan file sekitar 1 GB ketika saya perlu membuat sedikit perubahan pada SQL dump. Saya menggunakan Windows, yang membuatnya sangat sakit. Sangat sulit.
Pertanyaan yang jelas adalah "mengapa Anda perlu?" Saya dapat memberitahu Anda dari pengalaman harus mencoba ini lebih dari sekali, Anda mungkin benar - benar ingin mencoba mencari cara lain.
Jadi, bagaimana Anda melakukannya? Ada beberapa cara saya melakukannya. Terkadang saya bisa mendapatkan vim atau nano untuk membuka file, dan saya bisa menggunakannya. Itu rasa sakit yang sangat berat, tetapi berhasil.
Ketika itu tidak berhasil (seperti dalam kasus Anda), Anda hanya memiliki beberapa opsi. Anda dapat menulis program kecil untuk membuat perubahan yang Anda butuhkan (misalnya, mencari & mengganti). Anda dapat menggunakan program baris perintah yang mungkin dapat melakukannya (mungkin dapat dilakukan dengan sed / awk / grep / etc?)
Jika itu tidak berfungsi, Anda selalu dapat membagi file menjadi beberapa bagian (seperti split menjadi pilihan yang jelas, tetapi Anda dapat menggunakan head / tail untuk mendapatkan bagian yang Anda inginkan) dan kemudian mengedit bagian yang membutuhkannya, dan bergabung kembali nanti.
Percayalah, coba cari cara lain.
Saya menggunakan vim 7.3.3 pada Win7 x64 dengan plugin LargeFile oleh Charles Campbell untuk menangani file teks biasa multi-gigabyte. Ini bekerja dengan sangat baik.
Saya harap Anda datang dengan benar.
Wow, tidak pernah berhasil membuat vim tersedak, bahkan dengan satu atau dua GB. Saya pernah mendengar bahwa UltraEdit (di Windows) dan BBEdit (di Mac) bahkan lebih cocok untuk file yang lebih besar, tetapi saya tidak memiliki pengalaman pribadi.
Di masa lalu saya membuka hingga file 3 pertunjukan dengan alat ini http://csved.sjfrancke.nl/
Secara pribadi, saya suka UltraEdit . Inilah permainan kecil mereka pada file besar .
Saya telah menggunakan editor / viewer bawaan FAR Commander untuk file log super besar.
Satu-satunya hal yang dapat saya gunakan untuk sesuatu seperti itu adalah editor hex Mac favorit saya, 0XED. Namun, itu dengan file yang saya anggap besar, yaitu puluhan megabyte. Saya tidak yakin seberapa jauh itu akan berjalan. Saya cukup yakin itu hanya memuat bagian file ke dalam memori sekaligus.