Bagaimana saya bisa menghapus dalam VIM semua teks dari baris saat ini ke akhir file?

213

Saya memiliki file yang sangat besar (lebih dari 10Gb). Saya hanya perlu beberapa baris dari bagian atas file. Apakah mungkin (dalam vim) untuk menghapus sisa file (dari baris saat ini ke akhir file)?

pengguna810430
sumber
12
Saya tahu Anda ingin menggunakan Vim, tetapi saya akan melakukan perintah shell seperti: head -n <number_of_lines> <filename> > <truncated_filename> Di mana -nparameter untuk jumlah baris yang Anda inginkan dari atas
EhevuTov

Jawaban:

365

dG akan menghapus dari baris saat ini ke akhir file

dCtrl+ Endakan menghapus dari kursor ke akhir file

Tetapi jika file ini sebesar yang Anda katakan, Anda mungkin lebih baik membaca beberapa baris pertama dengan headdaripada mengedit dan menyimpan file.

head hugefile > firstlines

(Jika Anda menggunakan Windows, Anda dapat menggunakan port Win32 head)

Ed Guinness
sumber
17
Anda dapat menentukan berapa banyak saluran yang headmemasok misalnya: head -n20 hugefileuntuk 20 saluran pertama. n default ke 10.
drevicko
3
Butuh motivasi head? Menggunakan dG pada file besar (1G +) membutuhkan banyak waktu (mis. 5 menit).
BurninLeo
3
Bagi mereka yang mencari yang sebaliknya, dggakan menghapus dari baris saat ini ke awal file.
stevesliva
Ctrl + End tidak bekerja untuk saya. d Shift + End tidak menghapus dari kursor ke akhir baris.
lightwing
68

Buka baris pertama yang ingin Anda hapus, dan tekan tombol dG

James Mathew
sumber
39
jangan tekan ":" sebelum Anda mengetik dG
James Mathew
30

:.,$d

Ini akan menghapus semua konten dari baris saat ini hingga akhir file. Ini sangat berguna saat Anda berurusan dengan pembuatan vektor pengupasan atau stripping.

Chakravarthi
sumber
2
Saya lebih suka memiliki kontrol yang lebih besar dari baris awal, jadi saya menggunakan: :<line number>,$dmisalnya: :3,$dakan menghapus dari baris 3 hingga akhir file
emont01
0

Cukup tambahkan cara lain, dalam mode normal, ketik ctrl+vkemudian G, pilih sisanya, lalu D, saya rasa itu tidak efektif, Anda harus melakukan seperti @Ed Guiness, head -n 20> nama file di linux.

frank.lin
sumber