Làm cách nào tôi có thể xóa trong VIM tất cả văn bản từ dòng hiện tại đến cuối tệp?


213

Tôi có các tệp rất lớn (hơn 10Gb). Tôi chỉ cần một số dòng từ đầu tập tin. Có thể (trong vim) để xóa phần còn lại của tệp (từ dòng hiện tại đến cuối tệp)?


12
Tôi biết bạn muốn sử dụng Vim, nhưng tôi sẽ thực hiện một lệnh shell như: head -n <number_of_lines> <filename> > <truncated_filename> Đâu -nlà tham số cho số dòng bạn muốn từ đầu
EhevuTov

Câu trả lời:


365

dG sẽ xóa từ dòng hiện tại đến cuối tập tin

dCtrl+ Endsẽ xóa từ con trỏ đến cuối tập tin

Nhưng nếu tệp này lớn như bạn nói, bạn có thể tốt hơn hết là đọc vài dòng đầu tiên headthay vì chỉnh sửa và lưu tệp.

head hugefile > firstlines

(Nếu bạn đang ở trên Windows, bạn có thể sử dụng cổng Win32 của head)


17
bạn có thể chỉ định số lượng dòng headcung cấp với ví dụ: head -n20 hugefiletrong 20 dòng đầu tiên. n mặc định là 10.
drevicko

3
Cần một động lực cho head? Sử dụng dG trên một tệp lớn (1G +) mất rất nhiều thời gian (ví dụ: 5 phút).
BurninLeo

3
Đối với những người tìm kiếm converse, dggsẽ xóa từ dòng hiện tại đến đầu tập tin.
stevesliva

d Ctrl + End không hoạt động với tôi. d Shift + End đã thực hiện để xóa từ con trỏ đến cuối dòng.
lightwing

68

Chuyển đến dòng đầu tiên mà bạn muốn xóa và nhấn các phím dG


39
không nhấn ":" trước khi bạn nhập dG
James Mathew

30

:.,$d

Điều này sẽ xóa tất cả nội dung từ dòng hiện tại đến cuối tập tin. Điều này rất hữu ích khi bạn đang xử lý việc tạo hoặc thử nghiệm vectơ thử nghiệm.


2
Tôi thích có nhiều quyền kiểm soát dòng bắt đầu hơn, vì vậy tôi sử dụng: :<line number>,$dví dụ: :3,$dsẽ xóa từ dòng 3 đến cuối tệp
emont01

0

Chỉ cần thêm một cách khác, trong chế độ bình thường, nhập ctrl+vrồi G, chọn phần còn lại, sau đó D, tôi không nghĩ nó hiệu quả, bạn nên làm như @Ed Guiness, head -n 20> tên tệp trong linux.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.