Tôi có thể sử dụng vim để mở một tệp lớn một cách hiệu quả không?


17

đôi khi tôi cần mở một tệp nhật ký vài GB, bây giờ tôi cần sử dụng đuôi để có phần phù hợp nhưng điều đó rất tẻ nhạt.

Tôi chỉ có thể sử dụng vim để mở nó trực tiếp? Hiện tại vim sẽ chiếm rất nhiều bộ nhớ khi mở một tệp lớn ... Chỉ cần tự hỏi tại sao nó lại được yêu cầu? Nếu có một số tùy chọn có thể ngăn chặn bộ nhớ được tải?

Câu trả lời:


13

Nếu bạn chỉ muốn xem một tập tin, hãy sử dụng ít hơn .

Nếu bạn cần cắt bỏ một phần cụ thể của tệp, hãy làm điều này (trong phạm vi ít hơn ):

  1. Chuyển đến trang 1 bạn quan tâm

  2. Nhấn các phím ma- điều này có nghĩa là: đánh dấu vị trí a .

  3. Chuyển đến vị trí cuối cùng của tệp bạn quan tâm

  4. Nhấn các phím |(ống) và a- điều này có nghĩa là: đường ống mọi thứ ở đây và vị trí a đến một lệnh

  5. Nhập lệnh bạn muốn dữ liệu được gửi đến. Nếu bạn muốn sao chép dữ liệu này vào bộ đệm của trình soạn thảo, chỉ cần sử dụng vim -lệnh (dấu trừ như tên tệp có nghĩa là tệp cần chỉnh sửa sẽ được đọc từ stdin ).

Nếu bạn biết rằng bạn sẽ cần tất cả dữ liệu từ một vị trí cụ thể cho đến cuối tệp, bạn cũng có thể thực hiện việc này:

  1. Chuyển đến trang 1 bạn quan tâm

  2. Nhấn các phím |(ống) và $- điều này có nghĩa là: dẫn mọi thứ từ đây đến cuối tập tin vào một lệnh

  3. Nhập lệnh bạn muốn dữ liệu được gửi đến (ví dụ cat >/tmp/myfilehoặc vim -).


1
Tôi không biết lesscó thể làm điều này. Cảm ơn :)
icedwater

4

Kiểm tra nàynày .

Về cơ bản, các tùy chọn của bạn là:

  1. Hãy dùng thử tập lệnh Vim Large File . Nó vô hiệu hóa một số tính năng nhất định để cải thiện khả năng phản hồi của Vim khi chỉnh sửa các tệp lớn.
  2. Chia tập tin thành các phần nhỏ hơn, chỉnh sửa phần bạn quan tâm và ghép chúng lại với nhau.

3

Có, Vim có thể mở các tệp rất lớn. Nhưng, để bảo tồn bộ nhớ, một số điều bạn có thể nên ghi nhớ trước khi thực hiện:

  • bỏ qua filetype (không có tô sáng cú pháp, v.v.), mặc dù trong tất cả khả năng nó sẽ không có cú pháp đánh dấu cú pháp cho các tệp nhật ký, nhưng chỉ để chắc chắn để nó không bắt đầu đi qua chúng
  • noswapfile (bạn chắc chắn không muốn có một bản sao của tệp có kích thước đó)
  • bufhidden = unload (lưu bộ nhớ khi xem tập tin khác)
  • buftype = nowritefile (chỉ đọc)
  • undolevels = -1 (không thể hoàn tác)

Có thể có một hoặc hai tùy chọn tôi đã bỏ lỡ, nhưng những thứ này cho đến nay trong _vimrc của tôi.


Lưu ý rằng (1) có một plugin ( vim.org/scripts/script.php?script_id=1506 ) để tự động bật một số tùy chọn này khi mở một tệp lớn và (2) ngay cả với chương trình này, mở các tệp đó kích thước lớn hơn vài GB vẫn có thể gặp sự cố, vì vậy tôi khuyên bạn nên làm theo mẹo "Ctrl-C" tại đây: stackoverflow.com/a/19795855/1858225
Kyle Strand
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.