Làm cách nào để ngăn vim tạo (và để lại) các tệp tạm thời?


163

Tại sao vim tạo <filename>~tập tin? Có cách nào để vô hiệu hóa điều đó?

Nếu đó là để sao lưu (hoặc một cái gì đó), tôi sử dụng git cho điều đó.

Ngoài ra, những .<filename.with.path.hints>.swptập tin này quá.

Làm thế nào để tôi nói với vim không tạo ra chúng, hoặc ít nhất là để dọn dẹp sau đó?

BIÊN TẬP

Rất tiếc, trùng lặp:

Tại sao Vim lưu tệp với phần mở rộng ~?

Tôi chấp nhận câu trả lời của rogeriopvl từ đó.

nguyên văn bản sao:

set nobackup       "no backup files
set nowritebackup  "only in case you don't want a backup file while editing
set noswapfile     "no swap files

12
Git sẽ không bao giờ giúp bạn phục hồi công việc sau sự cố hệ thống. Git cũng có thể bỏ qua các tệp * .swp của bạn. = D
vmassuchetto



lol có ai nghiêm túc đánh dấu câu hỏi này là trùng lặp sau sáu năm đăng nó không?
hasen

Câu trả lời:


78

Tôi thực sự khuyên bạn nên tiếp tục làm việc với các tệp hoán đổi (trong trường hợp Vim gặp sự cố).

Bạn có thể đặt thư mục nơi các tệp hoán đổi được lưu trữ, vì vậy chúng không làm lộn xộn các thư mục bình thường của bạn:

set swapfile
set dir=~/tmp

Xem thêm

:help swap-file

4
tốt, tôi không bao giờ cần những người có notepad ++, trừ khi bạn nói rằng vim sẽ bị sập quá thường xuyên!
hasen

8
không, tôi không ngụ ý rằng vim gặp sự cố quá thường xuyên (mặc dù tôi đã thấy nó bị sập). Nhưng đối với môi trường làm việc của tôi, kết nối mạng với một số máy chủ tôi đang làm việc khá không ổn định, do đó việc chỉnh sửa bị gián đoạn xảy ra. Trao đổi tập tin giúp ở đó.
dùng55400

9
@ user55400 nghe nói về GNU / Màn hình? (hoặc tmux, hoặc sự thay thế của Nhật Bản này)
Elazar Leibovich

Tôi đã thêm tệp này vào tệp _vimrc của mình trên Windows và tôi vẫn nhận được tệp ~ tệp. Tôi không làm điều gì đó chính xác?
FilBot3

2
@noircc Tôi khuyên bạn không nên sử dụng / tmp. Trong trường hợp toàn bộ hệ thống gặp sự cố và bạn cần khởi động lại, các tệp hoán đổi của bạn sẽ biến mất.

56

Đặt cái này trong tập tin cấu hình .vimrc của bạn.

set nobackup

5
Chúng tôi đã thực hiện điều này trên Windows 8.1 với Vim. Các tập tin trao đổi vẫn còn.
Shaun Luttin

1
Shaun, bạn có thể cần thêm "set noswapfile" vào .vimrc của mình để ngăn các tệp hoán đổi mới được tạo, như đã đề cập trong phần chỉnh sửa cho câu hỏi ban đầu.
Bá tước Zedd

Còn việc :ngồi làm tiền tố trước settừ khóa thì sao? Có cần thiết không? Nó không giống như một bình luận ..
Stephane

@Stephane một :tiền tố có nghĩa là nó được thực hiện trong chế độ lệnh, nhưng bạn không cần :khi viết vimrc của mình
TankorSmash

Đó không thực sự là một ý tưởng tốt. Ở trên cho phép các tệp này ngồi trong thư mục temp / đã tốt hơn nhiều.
MonsieurMan

36

; Để người dùng Windows quay lại thư mục tạm thời

set backup
set backupdir=C:\WINDOWS\Temp
set backupskip=C:\WINDOWS\Temp\*
set directory=C:\WINDOWS\Temp
set writebackup

6
Tôi đã phải thêm bộ undodir = C: \ WINDOWS \ Temp

Điều này không hiệu quả với tôi - thay vào đó tôi phải sử dụng set dir = $ TEMP
Frank Schmitt

10

Tôi đã tạo một plugin có tên "noswapsuck" chỉ cho phép hoán đổi khi bộ đệm chứa các thay đổi chưa được lưu. Khi các thay đổi đã được lưu, tệp hoán đổi sẽ bị xóa. Do đó, các tệp hoán đổi chứa cùng nội dung với tệp trên đĩa sẽ bị xóa.

Lấy nó ở đây: noswapsuck.vim

Nó đã hoạt động tốt cho tôi, nhưng tôi chưa bao giờ công khai nó trước đây, vì vậy tôi rất hoan nghênh phản hồi.

Ưu điểm:

  • Các tệp hoán đổi duy nhất còn lại trên đĩa của bạn sẽ là các tệp hoán đổi quan trọng thực sự khác với tệp!

Nhược điểm:

  • Nếu bộ đệm có tệp hoán đổi, nó sẽ không được phát hiện khi tệp được mở lần đầu tiên. Nó sẽ chỉ được phát hiện khi swapfileđược bật, đó là khi bạn bắt đầu chỉnh sửa bộ đệm. Đó là muộn khó chịu, và sẽ làm gián đoạn bạn. (Đã giải quyết: Bây giờ chúng tôi kiểm tra tệp hoán đổi có sẵn khi bộ đệm được mở, bằng cách tạm thời bật lại swapfiletùy chọn.)

  • Nếu bạn đang làm việc trong một môi trường mà bạn muốn giảm thiểu việc ghi đĩa (ví dụ như năng lượng thấp hoặc các tệp được gắn trên mạng hoặc chỉnh sửa một tệp lớn) thì không nên lý tưởng để tiếp tục xóa và tạo lại tệp hoán đổi trên mỗi lưu và chỉnh sửa. Trong những tình huống như vậy, bạn có thể làm:

    :let g:NoSwapSuck_CloseSwapfileOnWrite = 0
    

    sẽ giữ lại tệp hoán đổi sau khi ghi, nhưng vẫn sẽ xóa nó khi bộ đệm mất tiêu điểm.

Nhân tiện, tôi có một plugin nhỏ khác :DiffAgainstFileOnDiskcó thể khá hữu ích sau khi nhấn (r)ecover, để kiểm tra xem bộ đệm bạn đã khôi phục có mới hơn hoặc cũ hơn tệp hiện có hoặc giống hệt với nó không.


8

Trên Windows thêm các dòng sau vào _vimrc

" store backup, undo, and swap files in temp directory
set directory=$HOME/temp//
set backupdir=$HOME/temp//
set undodir=$HOME/temp//

5

Câu trả lời này áp dụng cho việc sử dụng gVim trên Windows 10. Tôi không thể đảm bảo kết quả tương tự cho các hệ điều hành khác.

Thêm vào:

set nobackup
set noswapfile
set noundofile

Để tập tin _vimrc của bạn.

Lưu ý: Đây là câu trả lời trực tiếp cho câu hỏi (đối với Windows 10) và có lẽ không phải là điều an toàn nhất để làm (đọc các câu trả lời khác), nhưng đây là giải pháp nhanh nhất trong trường hợp của tôi.


0

Tôi có thiết lập này trong Ubuntu .vimrc của tôi. Tôi không thấy bất kỳ tập tin trao đổi trong các tập tin dự án của tôi.

set undofile
set undolevels=1000         " How many undos
set undoreload=10000        " number of lines to save for undo

set backup                        " enable backups
set swapfile                      " enable swaps
set undodir=$HOME/.vim/tmp/undo     " undo files
set backupdir=$HOME/.vim/tmp/backup " backups
set directory=$HOME/.vim/tmp/swap   " swap files

" Make those folders automatically if they don't already exist.
if !isdirectory(expand(&undodir))
    call mkdir(expand(&undodir), "p")
endif
if !isdirectory(expand(&backupdir))
    call mkdir(expand(&backupdir), "p")
endif
if !isdirectory(expand(&directory))
    call mkdir(expand(&directory), "p")
endif
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.