Có trình chỉnh sửa nào có thể chỉnh sửa các tệp văn bản nhiều gigabyte, có lẽ bằng cách chỉ tải các phần nhỏ vào bộ nhớ cùng một lúc không? Có vẻ như Vim không thể xử lý được = (
Có trình chỉnh sửa nào có thể chỉnh sửa các tệp văn bản nhiều gigabyte, có lẽ bằng cách chỉ tải các phần nhỏ vào bộ nhớ cùng một lúc không? Có vẻ như Vim không thể xử lý được = (
Câu trả lời:
Nếu bạn đang ở trên * nix (và giả sử bạn phải thay đổi chỉ một phần của tập tin (và hiếm khi)), bạn có thể chia các tập tin (sử dụng split
lệnh), chỉnh sửa chúng riêng (sử dụng awk
, sed
hoặc một cái gì đó tương tự) và nối chúng sau khi bạn được thực hiện.
cat file2 file3 >> file1
Ctrl-C sẽ dừng tải tệp. Nếu tệp đủ nhỏ, bạn có thể may mắn đã tải tất cả nội dung và chỉ cần bỏ qua bất kỳ bước tải bài đăng nào. Xác minh rằng toàn bộ tệp đã được tải khi sử dụng mẹo này.
Vim có thể xử lý các tệp lớn khá tốt. Tôi vừa chỉnh sửa một tệp 3,4 GB, đang xóa các dòng, v.v. Ba điều cần lưu ý:
:115355
sẽ đưa bạn trực tiếp đến dòng 115355, nhanh hơn nhiều trong các tệp lớn đó. Vim dường như bắt đầu quét từ đầu mỗi khi nó tải bộ đệm các dòng và nhấn giữ Ctrl-F để quét qua tệp dường như thực sự chậm ở gần cuối.Lưu ý - Nếu phiên bản Vim của bạn ở chế độ chỉ đọc vì bạn nhấn Ctrl-C, có thể Vim đã không tải toàn bộ tệp vào bộ đệm. Nếu điều đó xảy ra, việc lưu nó sẽ chỉ lưu những gì có trong bộ đệm chứ không phải toàn bộ tệp . Bạn có thể nhanh chóng kiểm tra bằng cách G
bỏ qua đến cuối để đảm bảo tất cả các dòng trong tệp của bạn đều ở đó.
Nó có thể là các plugin đang khiến nó bị nghẹt. (đánh dấu cú pháp, nếp gấp, v.v.)
Bạn có thể chạy vim mà không cần plugin.
vim -u "NONE" hugefile.log
Nó tối giản nhưng ít nhất nó sẽ cung cấp cho bạn những chuyển động vi tính mà bạn đã quen.
syntax off
là một điều hiển nhiên khác. Cắt tỉa cài đặt của bạn và tìm nguồn những gì bạn cần. Bạn sẽ tìm ra khả năng của nó và liệu bạn có cần hoàn thành nhiệm vụ thông qua các phương tiện khác hay không.
Một chút cải tiến đối với câu trả lời do @Al pachio đưa ra với giải pháp split + vim, bạn có thể đọc các tệp trong đó với một khối cầu, sử dụng hiệu quả các khối tệp làm bộ đệm, ví dụ:
$ split -l 5000 myBigFile
xaa
xab
xac
...
$ vim xa*
#edit the files
:nw #skip forward and write
:n! #skip forward and don't save
:Nw #skip back and write
:N! #skip back and don't save
Bạn có thể muốn xem plugin VIM này vô hiệu hóa một số tính năng vim vì lợi ích của tốc độ khi tải các tệp lớn.
Tôi đã cố gắng làm điều đó, chủ yếu với các tệp khoảng 1 GB khi tôi cần thực hiện một số thay đổi nhỏ đối với kết xuất SQL. Tôi đang sử dụng Windows, điều này khiến nó trở thành một vấn đề lớn. Nó rất khó.
Câu hỏi rõ ràng là "tại sao bạn cần?" Tôi có thể nói với bạn từ kinh nghiệm phải thử điều này nhiều hơn một lần, bạn có thể thực sự muốn thử tìm cách khác.
vậy bạn sẽ làm sao? Có một số cách tôi đã thực hiện. Đôi khi tôi có thể nhận vim hoặc nano để mở tệp và tôi có thể sử dụng chúng. Đó là một nỗi đau thực sự khó khăn, nhưng nó có hiệu quả.
Khi điều đó không hiệu quả (như trong trường hợp của bạn), bạn chỉ có một số lựa chọn. Bạn có thể viết một chương trình nhỏ để thực hiện các thay đổi bạn cần (ví dụ: tìm kiếm và thay thế). Bạn có thể sử dụng một chương trình dòng lệnh có thể thực hiện được (có thể nó có thể được thực hiện với sed / awk / grep / etc?)
Nếu những cách đó không hiệu quả, bạn luôn có thể chia tệp thành nhiều phần (chẳng hạn như chia nhỏ là lựa chọn hiển nhiên, nhưng bạn có thể sử dụng head / tail để có được phần bạn muốn) và sau đó chỉnh sửa (các) phần cần nó, và kết hợp lại sau đó.
Hãy tin tôi, hãy thử tìm cách khác.
Tôi đang sử dụng vim 7.3.3 trên Win7 x64 với plugin LargeFile của Charles Campbell để xử lý các tệp văn bản thuần túy nhiều gigabyte. Nó hoạt động thực sự tốt.
Tôi hy vọng bạn đến đúng.
Chà, không bao giờ quản lý để khiến khí lực bị nghẹt thở, ngay cả với một hoặc hai GB. Tôi đã nghe nói rằng UltraEdit (trên Windows) và BBEdit (trên Mac) thậm chí còn phù hợp hơn với các tệp lớn hơn nữa, nhưng tôi không có kinh nghiệm cá nhân.
Trước đây, tôi đã mở tệp 3 gig bằng công cụ này http://csved.sjfrancke.nl/
Cá nhân tôi thích UltraEdit . Đây là phần nhỏ của họ trên các tệp lớn .
Điều duy nhất tôi có thể sử dụng cho những thứ như vậy là trình chỉnh sửa Mac hex yêu thích của tôi, 0XED. Tuy nhiên, đó là với các tệp mà tôi coi là lớn ở hàng chục megabyte. Tôi không chắc nó sẽ đi bao xa. Tuy nhiên, tôi khá chắc chắn rằng nó chỉ tải các phần của tệp vào bộ nhớ cùng một lúc.