Saya memiliki file cadangan database MySQL 100MB dan saya mengalami kesulitan untuk membukanya di Vim pada kotak Linux saya yang memiliki 16G RAM.
Vim hanya hang (setidaknya tidak dapat digunakan). Ini adalah sesuatu yang saya tidak mengerti. Saya memiliki 16 GB RAM, mengapa saya tidak dapat memuat file 100 MB dalam editor?
Apakah karena Vim? Saya pikir semua manajemen memori ditangani oleh OS.
hexer
.Jawaban:
Vim terkadang bermasalah dengan file yang memiliki garis panjang luar biasa. Ini adalah editor teks, jadi itu dirancang untuk file teks, dengan panjang garis yang biasanya paling banyak beberapa ratus karakter.
File database mungkin tidak mengandung banyak karakter baris baru, jadi bisa jadi hanya satu baris panjang 100 Mb. Vim tidak akan senang dengan itu, dan meskipun mungkin akan berhasil, mungkin butuh waktu yang cukup lama untuk memuat file.
Saya sudah pasti membuka file teks yang jauh lebih besar dari 100 Mb dengan Vim. File bahkan tidak perlu masuk ke memori sekaligus (karena Vim dapat menukar perubahan ke disk sesuai kebutuhan).
sumber
set synmaxcol=120
(atau nomor lain yang sesuai). Saya telah memperhatikan percepatan besar dari ini di masa lalu.Dalam pengalaman saya Vim tersedak bukan pada file besar , tetapi pada garis panjang . Gunakan perintah ini untuk
mysqldump
menggunakan baris yang lebih pendek dengan mengorbankan file yang lebih besar :Selain itu, Anda dapat membuka Vim dan memintanya untuk tidak mem-parsing
.vimrc
file Anda atau memuat plugin apa pun dengan perintah ini:Memuat Vim dengan cara ini akan menggunakan lebih sedikit memori dan tidak memerlukan Vim untuk mem-parsing seluruh file seperti halnya banyak plugin.
sumber
"muat VIM tanpa .vimrc dan plugins (bersihkan VIM) misalnya untuk file BESAR
sumber
Coba gunakan
less
alih-alihvim
jika Anda ingin melihat file besar secara langsung. Vim mencoba melakukan banyak hal yang berbeda ketika pertama kali memuat - memindai file (berpotensi dalam beberapa lintasan) untuk mencoba menentukan sintaks apa yang akan digunakan, dan melakukan penyorotan sintaks, dan mencari modelines di bagian atas dan bawah file. Kemudian saat Anda mengedit file, vim menyimpan swapfiles dan menjaga pohon dibatalkan (membatalkan sejarah di vim bercabang, tidak linier seperti di setiap (?) Editor lain), dan terus-menerus mengevaluasi kembali penyorotan sintaksis saat teks berubah, dll.Tak satu pun dari itu yang tentu saja merupakan alasan mengapa harus begitu tidak dapat digunakan dengan file raksasa, tapi itu lebih merupakan penjelasan dari beberapa alasan mengapa itu.
sumber
Vim tidak hanya memuat file apa adanya ke dalam memori. Itu mengubahnya menjadi struktur internal (baris, kata, dll), melakukan penyorotan sintaksis menggunakan bahasa skrip internal, dan sebagainya; yang semuanya menghabiskan memori (lebih dari satu byte untuk sebuah karakter) dan waktu CPU.
sumber
Anda dapat mencoba memuatnya sebagai biner. Saya beruntung dengan file non-teks yang sangat besar
IIRC juga dimungkinkan untuk menggunakan vim sebagai hex editor, lihat: http://usevim.com/2012/06/20/vim-binary-files/
sumber
Semoga masalah Anda lebih berkaitan dengan kebutuhan VIM untuk file sementara (seperti swap) lebih dari RAM.
Dalam banyak kasus, file sementara yang dibuat oleh VIM berada di direktori yang sama dengan file yang Anda buka. Jika ini masalahnya, Anda dapat memverifikasi dengan memeriksa ruang disk yang tersedia di direktori saat ini.
Untungnya, ada dokumentasi yang bagus tentang bagaimana Anda dapat menentukan lokasi yang berbeda untuk pengindeksan / pertukaran file VIM:
Anda juga dapat menonaktifkan file swap
sumber
Saya kadang-kadang membuka cadangan database besar dalam format teks .sql. File yang sangat besar, atau file dengan garis yang sangat panjang seringkali kadang-kadang tampaknya membutuhkan waktu lama untuk dibuka dalam vim. Ini mungkin terkait dengan pemrosesan sintaksis dan penyorotan warna, seperti yang disebutkan dalam jawaban oleh @zzapper dan @demonkoryu.
Solusi cepat mungkin dengan menekan "control-G" selama memuat file untuk membatalkan sintaks yang menyoroti pra-pemrosesan.
sumber