Vim có tự động lưu không?


13

Từ :help swap-file:

Cập nhật tệp hoán đổi

Tệp hoán đổi được cập nhật sau khi nhập 200 ký tự hoặc khi bạn không gõ bất cứ thứ gì trong bốn giây. Điều này chỉ xảy ra nếu bộ đệm bị thay đổi, không phải khi bạn chỉ di chuyển xung quanh. Lý do tại sao nó không được cập nhật mọi lúc là vì điều này sẽ làm chậm công việc bình thường quá nhiều. Bạn có thể thay đổi số lượng 200 ký tự bằng tùy chọn 'updatecount'. Bạn có thể đặt thời gian với tùy chọn 'updatetime'. Thời gian được tính bằng mili giây. Sau khi ghi vào tệp hoán đổi, Vim đồng bộ tệp vào đĩa. Điều này cần một chút thời gian, đặc biệt là trên các hệ thống Unix bận rộn. Nếu bạn không muốn điều này, bạn có thể đặt tùy chọn 'swapsync' thành một chuỗi trống. Nguy cơ mất việc trở nên lớn hơn mặc dù. Trên một số hệ thống không phải Unix (MS-DOS, Amiga), tệp hoán đổi hoàn toàn không được ghi.

Từ đây tôi có một vài câu hỏi:

  1. Điều này có nghĩa là Vim tự động lưu trữ công việc của bạn theo thời gian?

  2. "Sau khi ghi vào tệp hoán đổi, Vim sẽ đồng bộ hóa tệp vào đĩa." Điều đó có nghĩa là gì? Đây có phải là tham chiếu đến tập tin được ghi đầu tiên vào bộ nhớ và sau đó vào đĩa hoặc nó là cái gì khác?

  3. Giả sử tôi đang ghi chú lớp: Tôi viết nhanh và tôi không cần phải rời khỏi chế độ Chèn. Nhưng nhiều lần tôi đổi sang Bình thường chỉ để cứu công việc của mình. Tôi có cần phải làm điều này không hay Vim có đảm bảo rằng hầu hết công việc của tôi được lưu ngay cả khi tôi không rời khỏi chế độ Chèn không?

Câu trả lời:


9
  1. Có nó lưu vào tập tin trao đổi.

Bạn có thể làm một bài kiểm tra nhanh để cảm nhận về điều này. Đi đến một thư mục. Nói vim notest.txtvà viết một số văn bản. Bạn thậm chí không phải lưu tệp.

Nếu bạn liệt kê các tập tin trong thư mục làm việc, bạn sẽ tìm thấy một tập tin trao đổi. Sao chép nó vào một thư mục khác (nơi bạn không có tệp "Notes.txt" vim notest.txt.

Bạn nhận được một lưu ý về trao đổi hiện có, nó đang được sửa đổi và các tùy chọn mở như chỉ đọc, khôi phục, v.v. Chọn recovery và voila! Một "bản sao" của tập tin của bạn.

  1. Có, trao đổi được tổ chức trong bộ nhớ.

Khi Vim đọc một tập tin, nó sẽ thêm nó vào RAM. Đó là cả cho hiện tại và mới (vẫn chưa lưu tệp). Khi trao đổi được lưu, nó được tuôn ra đĩa. Ổ cứng. Từ RAM.

  1. Có và không.

Với cài đặt mặc định, hầu hết các công việc của bạn được lưu. Đó là cứ 200 ký tự được nhập hoặc khi bạn tạm dừng 4 giây. Mặc dù tôi tin tưởng tệp hoán đổi sẽ được lưu, tôi muốn lưu công việc của mình khi tôi biết tôi đang ở trên một hệ thống không ổn định. Nhưng, điều đó nói rằng, một người khá chắc chắn để giữ công việc trừ khi người ta rất không may mắn và hệ thống lưu trữ sẽ hoảng loạn ngay sau khi viết một câu rất quan trọng.

Nói tóm lại là đủ để tiết kiệm khi bài giảng kết thúc. Nếu hệ thống phải dừng lại vì lý do gì đó ở giữa một lớp, công việc sẽ đến khi trao đổi.

Tất nhiên: Nếu bạn không may mắn, một sự cố có thể xảy ra trong khi tập tin hoán đổi đang được viết. Kết quả là một tập tin trao đổi thể bị hỏng. Chưa bao giờ trải nghiệm điều này, và không chắc phần nào của tệp có thể bị rối, nhưng có thể đáng suy nghĩ. Vì tệp hoán đổi là nhị phân (thiếu một từ tốt hơn), có vẻ như lý do nó dễ vỡ hơn một tệp văn bản thuần túy.


Như một lưu ý phụ. Ít nhất là khi sử dụng thư mục làm việc để trao đổi, tệp hoán đổi là không xác định vị trí khi nói đến việc khôi phục. Như vậy, bạn có thể sao chép tệp hoán đổi sang một vị trí mới và khôi phục tệp dưới dạng tệp mới . Chỉ lưu ý rằng tên tệp được mã hóa cứng vào trao đổi. Như vậy bạn không thể nói:

cp .foo.txt.swp .bar.txt.swp

vim bar.txt

và mong đợi các tập tin trao đổi của foo.txt.

Nếu bạn rất quan tâm bạn có thể làm (trên * nix):

xxd -s 108 -l 800 -ps .foo.txt.swp | xxd -r -p

để có được đường dẫn (với một số quirks) của tệp gốc. Như bạn sẽ thấy đường dẫn đầy đủ được thêm vào, ví dụ:

~user/blah/blah/notes.txt

nhưng chỉ có tên cơ sở được sử dụng trên kiểm tra trao đổi.

Về vấn đề đó, bạn cũng có thể kiểm tra vim -rtùy chọn - liệt kê các tệp hoán đổi trong các thư mục hiện tại và thấp hơn. Xem :h crash-recoveryvới các chủ đề phụ.


0

Đối với tôi là tốt để lưu bộ đệm bất cứ khi nào văn bản được thay đổi:

autocmd TextChanged,TextChangedI <buffer> silent write

Tôi tìm thấy nó ở đây . Nó làm việc cho tôi.

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.