Điều gì xảy ra nếu tôi sử dụng vi trên các tệp lớn?


16

Mặc dù chúng tôi được hướng dẫn là không, một đồng nghiệp của tôi đã sử dụng vi để xem tệp văn bản lớn (server.log 3,5 GB). Điều này đã lấp đầy / var / tmp và gây ra một số vấn đề trên máy chủ.

Điều gì gây ra điều này? Tại sao chúng ta không nên sử dụng vi cho các tệp lớn?


3
vi(hoặc vimcho vấn đề đó) rất chậm trên các tệp lớn và thậm chí có thể không sử dụng được nếu không có nhiều dòng kết thúc. Hơn nữa, tập tin cần phải phù hợp với bộ nhớ. Sử dụng lesscho các tệp lớn, nó nhanh hơn nhiều và thường đủ để đọc / xem tệp nhật ký.
Marco

@Marco Tại sao không đặt nó làm câu trả lời?
Bernhard

1
bởi vì đó không phải là câu trả lời cho câu hỏi, mà là một nhận xét, câu hỏi thường gặp là "Điều gì gây ra điều này? Tại sao chúng ta không nên sử dụng vi cho các tệp lớn?"
Kiwy

nhìn vào bình luận với câu trả lời của tôi
rɑːdʒɑ 19/12/13

Câu trả lời:


7

Thư mục mặc định (/ var / tmp) cho bộ đệm chỉnh sửa vi cần không gian bằng khoảng hai lần kích thước của tệp mà bạn đang làm việc, bởi vì vi sử dụng các dòng bổ sung để thao tác bộ đệm.

Nếu thư mục / var / tmp không có đủ dung lượng cho bộ đệm chỉnh sửa (ví dụ: bạn đang làm việc với một tệp lớn hoặc hệ thống sắp hết dung lượng

đôi khi bạn có thể nhận được, bạn cũng sẽ nhận được thông báo lỗi như thế này

Not enough space in /var/tmp.

Bạn có thể đọc về cách khắc phục điều này tại đây: http://kb.iu.edu/data/akqv.html


"Bộ đệm chỉnh sửa vi cần dung lượng bằng khoảng hai lần kích thước của tệp mà bạn đang làm việc" Nguồn?
atripathi

1
từ lâu tôi đã đọc từ kb.iu.edu/data/akqv.html . vì vậy tôi đã đưa nó cho bạn
rdʒɑ 19/12/13

20

Vim không được thiết kế cho các tệp lớn. Nó có một số tính năng nhất định làm chậm đáng kể trải nghiệm người dùng. Chẳng hạn, nó tải tệp vào bộ nhớ, về cơ bản giới hạn để chỉnh sửa các tệp nhỏ hơn kích thước bộ nhớ của bạn. Hơn nữa, các tính năng như tô sáng cú pháp, trao đổi tệp và hoàn tác rất kém hiệu quả với các tệp lớn và làm chậm hơn nữa. Một vấn đề khác là vimmong đợi không quá dài dòng. Nếu một tệp chứa một vài ký tự dòng mới vimtrở nên không sử dụng được.

Điều đó đã nói, có những plugin như vim-tinyefile thay đổi cài đặt cụ thể để hiệu quả hơn với các tệp lớn, nhưng cuối cùng vimsẽ không bao giờ trở nên linh hoạt khi bạn ném một số GiB vào nó.

Điểm mấu chốt là, không sử dụng vimtrên các tệp lớn. Nếu bạn muốn xem (ngược lại để chỉnh sửa) các tệp lớn, hãy sử dụng less. Nếu bạn muốn tìm kiếm một mẫu, hãy gạch chéo để bắt đầu tìm kiếm một mẫu:

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

Nếu bạn muốn lọc đầu ra, hãy sử dụng ký hiệu:

&<pattern>

Sau đó bắt đầu đầu ra liên tục bằng cách sử dụng shift-f. Bạn có thể thoát khỏi màn hình đầu ra liên tục với ctrl-cvà tinh chỉnh hoặc hủy mẫu bộ lọc của bạn hoặc bắt đầu tìm kiếm.

Để chỉnh sửa các tệp lớn sử dụng các công cụ như sed, chúng hiệu quả và được thiết kế cho mục đích này.

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.