Apa yang terjadi jika saya menggunakan vi pada file besar?

16

Meskipun kami diperintahkan untuk tidak melakukannya, seorang kolega saya menggunakan vi untuk melihat file teks besar (server.log 3.5 GB). Ini mengisi / var / tmp dan menyebabkan beberapa masalah di server.

Apa yang menyebabkan ini? Mengapa kita tidak menggunakan vi untuk file besar?

atripathi
sumber
3
vi(atau vimdalam hal ini) sangat lambat pada file besar dan bahkan mungkin tidak dapat digunakan jika tidak ada banyak baris. Selanjutnya, file tersebut harus sesuai dengan memori. Gunakan lessuntuk file besar, ini jauh lebih cepat dan sering cukup untuk membaca / menonton file log.
Marco
@ Mars Kenapa tidak menjawabnya?
Bernhard
1
karena itu bukan jawaban untuk pertanyaan, tetapi sebuah komentar, pertanyaannya adalah "Apa yang menyebabkan ini? Mengapa kita tidak menggunakan vi untuk file besar?"
Kiwy
lihat komentar dengan jawaban saya.
rɑːdʒɑ

Jawaban:

7

Direktori default (/ var / tmp) untuk buffer pengeditan vi membutuhkan ruang yang kira-kira sama dengan dua kali ukuran file yang Anda gunakan, karena vi menggunakan baris tambahan untuk manipulasi buffer.

Jika direktori / var / tmp tidak memiliki cukup ruang untuk buffer pengeditan (mis. Anda bekerja dengan file besar, atau sistem kehabisan ruang

beberapa kali Anda mungkin, Anda akan menerima pesan kesalahan berikut seperti ini juga

Not enough space in /var/tmp.

Anda dapat membaca tentang cara memperbaikinya di sini: http://kb.iu.edu/data/akqv.html

rɑːdʒɑ
sumber
"vi mengedit buffer membutuhkan ruang yang kira-kira dua kali lebih besar dari ukuran file yang Anda gunakan" Sumber?
atripathi
1
sudah lama saya membaca dari kb.iu.edu/data/akqv.html . jadi saya berikan kepada Anda
rʒɑdɑː
20

Vim tidak dirancang untuk file besar. Ini memiliki fitur tertentu yang secara drastis memperlambat pengalaman pengguna. Sebagai contoh, ini memuat file ke dalam memori yang pada dasarnya membatasi untuk mengedit file lebih kecil dari ukuran memori Anda. Selain itu, fitur-fitur seperti penyorotan sintaksis, swap file dan undo sangat tidak efisien dengan file besar dan memperlambat bahkan lebih. Masalah lainnya adalah vimgaris yang diharapkan tidak terlalu panjang. Jika file berisi beberapa karakter baris baru vimmenjadi tidak dapat digunakan.

Yang mengatakan, ada plugin seperti vim-largefile yang mengubah pengaturan tertentu menjadi lebih efisien dengan file besar, tetapi pada akhirnya vimtidak akan pernah tajam ketika Anda melempar beberapa GiB padanya.

Intinya adalah, jangan gunakan vimpada file besar. Jika Anda ingin melihat (berbeda dengan mengedit) file besar, gunakan less. Jika Anda ingin mencari suatu pola, gunakan garis miring untuk memulai pencarian suatu pola:

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

Jika Anda ingin memfilter output, gunakan ampersand:

&<pattern>

Kemudian mulai menggunakan output kontinu shift-f. Anda dapat keluar dari tampilan keluaran berkelanjutan dengan ctrl-cdan memperbaiki atau membatalkan pola filter Anda atau memulai pencarian.

Untuk mengedit file besar menggunakan alat seperti sed, mereka efisien dan dirancang untuk tujuan ini.

Marco
sumber