Saya mencoba membuka file besar (~ 2GB) di VIM tetapi tersedak. Saya sebenarnya tidak perlu mengedit file, hanya melompat-lompat secara efisien.
Bagaimana saya bisa bekerja dengan file yang sangat besar di VIM?
vim
large-files
hoju
sumber
sumber
:set binary
pertama kali ...Jawaban:
Saya memiliki file 12GB untuk diedit hari ini. Plugin vim LargeFile tidak bekerja untuk saya. Itu masih menggunakan semua memori saya dan kemudian mencetak pesan kesalahan :-(. Saya juga tidak dapat menggunakan hexedit, karena tidak dapat memasukkan apa pun, cukup timpa. Berikut adalah pendekatan alternatif:
Anda membagi file, mengedit bagian-bagian dan kemudian menggabungkannya kembali. Anda masih membutuhkan ruang disk dua kali lipat.
Grep untuk sesuatu yang mengelilingi baris yang ingin Anda edit:
Ekstrak rentang file tersebut. Katakanlah baris yang ingin Anda edit berada di baris 4 dan 5. Kemudian lakukan:
-n
opsi diperlukan untuk menekan perilaku default sed untuk mencetak segala sesuatu4,5p
mencetak baris 4 dan 55q
membatalkan sed setelah jalur pemrosesan 5Edit
SMALLPART
menggunakan editor favorit Anda.Gabungkan file:
HUGEFILE.new
sekarang akan menjadi file yang Anda edit, Anda dapat menghapus aslinyaHUGEFILE
.sumber
Ini telah menjadi pertanyaan yang berulang selama bertahun-tahun. (Angka terus berubah, tetapi konsepnya sama: bagaimana cara melihat atau mengedit file yang lebih besar dari memori?)
Jelas
more
atauless
merupakan pendekatan yang baik untuk sekadar membaca file ---less
bahkan menawarkanvi
seperti keybindings untuk menggulir dan mencari.Sebuah Freshmeat pencarian di "file besar" menunjukkan bahwa dua editor akan sangat cocok dengan kebutuhan Anda.
Salah satunya adalah: lfhex ... editor hex file besar (yang bergantung pada Qt). Yang itu, jelas, memerlukan penggunaan GUI.
Yang lain tampaknya cocok untuk penggunaan konsol: hed ... dan mengklaim memiliki
vim
antarmuka -seperti (termasukex
mode?).Saya yakin saya pernah melihat editor lain untuk Linux / UNIX yang dapat membuka halaman melalui file tanpa memuat keseluruhannya ke dalam memori. Namun, saya tidak ingat nama mereka. Saya membuat tanggapan ini sebagai entri "wiki" untuk mendorong orang lain menambahkan tautan mereka ke editor semacam itu. (Ya, saya akrab dengan cara untuk mengatasi masalah menggunakan
split
dancat
; tapi saya memikirkan editor, terutama editor konsol / kutukan yang dapat membuangnya dan menghemat waktu / latensi dan overhead ruang disk yang diperlukan oleh pendekatan semacam itu) .sumber
Karena Anda tidak perlu benar-benar mengedit file:
view
(atauvim -R
) harus bekerja cukup baik pada file besar.more
atauless
sumber
view
(baru dicoba dan waktunya). Memang, itu tidak instan, tapi berhasil.Saya menulis skrip kecil berdasarkan jawaban Florian yang menggunakan nano (editor favorit saya):
Gunakan seperti ini:
Dalam contoh itu, nano akan membuka baris 3 hingga 8, Anda dapat mengeditnya, dan ketika Anda menyimpan dan keluar, baris-baris di hugefile akan secara otomatis ditimpa dengan baris yang Anda simpan.
sumber
Aku punya masalah yang sama, tapi itu adalah mysql sampah 300GB dan saya ingin menyingkirkan
DROP
dan perubahanCREATE TABLE
untukCREATE TABLE IF NOT EXISTS
jadi tidak ingin menjalankan dua doa darised
. Saya menulis skrip Ruby cepat ini untuk menipu file dengan perubahan itu:Dipanggil seperti
sumber
chmod +x mreplace.rb
dulu, Anda juga bisaruby mreplace.rb ..
Untuk satu baris besar (mencetak karakter dari
1
ke99
):sumber
Ini sudah terlambat tetapi jika Anda hanya ingin menavigasi file tanpa mengeditnya, Anda juga
cat
dapat melakukan pekerjaan itu.atau alternatif sederhana:
sumber
cat
meningingkan file terlebih dahulu adalah tindakan bodoh yang gila-gilaan, karena itu berarti file tersebut akan sepenuhnya berada dalam memori (sehinggaless
dapat mencari file tersebut) atau tidak dapat dicari sama sekali;cat
hanya memberikan aliran keluaran statis.emacs bekerja sangat baik dengan file berukuran 100 megabyte, saya telah menggunakannya pada file log tanpa terlalu banyak masalah.
Tetapi secara umum ketika saya memiliki beberapa jenis tugas analisis, saya menemukan menulis skrip perl pilihan yang lebih baik.
sumber
Benang tua. Namun demikian (permainan kata :)).
kurang berfungsi secara efisien jika Anda tidak ingin mengedit dan hanya melihat-lihat yang merupakan kasus untuk memeriksa file log yang besar.
Cari di lebih sedikit karya seperti vi
Bagian terbaiknya, ini tersedia secara default di sebagian besar distro. Jadi tidak akan menjadi masalah untuk lingkungan produksi juga.
sumber
ini sudah tua tapi, gunakan nano, vim atau gvim
sumber