จะป้องกันไม่ให้ vim สร้าง (และปล่อย) ไฟล์ชั่วคราวได้อย่างไร?


163

ทำไมต้องเป็นกลุ่มสร้าง<filename>~ไฟล์? มีวิธีปิดใช้งานหรือไม่

หากเป็นการสำรองข้อมูล (หรือบางอย่าง) ฉันใช้ git สำหรับสิ่งนั้น

นอกจากนี้.<filename.with.path.hints>.swpไฟล์เหล่านี้ด้วย

ฉันจะบอกเป็นกลุ่มว่าจะไม่สร้างสิ่งเหล่านั้นหรืออย่างน้อยก็เพื่อล้างข้อมูลหลังจากตัวเอง?

แก้ไข

อ๊ะทำซ้ำ:

ทำไม Vim จึงบันทึกไฟล์ที่มีนามสกุล ~

ฉันยอมรับคำตอบของ rogeriopvlจากที่นั่น

คัดลอกคำต่อคำ:

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

13
Git จะไม่ช่วยคุณกู้คืนงานหลังจากระบบล่ม Git สามารถละเว้นไฟล์ * .swp ของคุณได้เช่นกัน = D
vmassuchetto

3
มีความเป็นไปได้ที่ซ้ำกันของทำไม Vim จึงบันทึกไฟล์ที่มีนามสกุล ~
törzsmókus


lol มีใครบางคนทำเครื่องหมายคำถามนี้ว่าซ้ำกันอย่างจริงจังหลังจากผ่านไปหกปีของการโพสต์หรือไม่
hasen

คำตอบ:


80

ฉันขอแนะนำอย่างยิ่งให้ทำงานกับไฟล์ swap (ในกรณีที่ Vim ล่ม)

คุณสามารถตั้งค่าไดเรกทอรีที่เก็บไฟล์สลับได้เพื่อไม่ให้รกไดเรกทอรีปกติของคุณ:

set swapfile
set dir=~/tmp

ดูสิ่งนี้ด้วย

:help swap-file

4
ดีฉันไม่เคยต้องการผู้ที่มีแผ่นจดบันทึก ++ เว้นแต่ว่าคุณจะพูดว่ากลุ่มจะมีปัญหาบ่อยเกินไป!
hasen

8
ไม่ฉันไม่ได้หมายความว่าเสียงเรียกเข้าดังกล่าวเกิดปัญหาบ่อยเกินไป (แม้ว่าฉันเคยเห็นมันผิดพลาด) แต่สำหรับสภาพแวดล้อมการทำงานของฉันการเชื่อมต่อเครือข่ายกับโฮสต์บางตัวที่ฉันทำงานอยู่นั้นค่อนข้างไม่เสถียร สลับไฟล์ช่วยได้
user55400

9
@ user55400 ได้ยิน GNU / หน้าจอไหม (หรือ tmux หรือทางเลือกภาษาญี่ปุ่นนี้)
Elazar Leibovich

ฉันเพิ่มสิ่งนี้ลงในไฟล์ _vimrc ของฉันบน Windows และฉันยังคงรับไฟล์อยู่ ~ ไฟล์ ฉันทำอะไรไม่ถูกต้องเหรอ?
FilBot3

2
@ noircc ฉันจะแนะนำให้ใช้ / tmp ในกรณีที่ระบบทั้งหมดขัดข้องและคุณต้องรีบูตเครื่อง swapfiles ของคุณจะหายไป

57

วางสิ่งนี้ลงในไฟล์กำหนดค่า. vimrc ของคุณ

set nobackup

5
เราทำสิ่งนี้บน Windows 8.1 ด้วย Vim ไฟล์สลับยังคงมีอยู่
Shaun Luttin

1
Shaun คุณอาจต้องเพิ่ม "set noswapfile" ใน. vimrc ของคุณด้วยเพื่อป้องกันการสร้างไฟล์ swap ใหม่ดังที่กล่าวไว้ในการแก้ไขคำถามเดิม
Earl Zedd

สิ่งที่เกี่ยวกับการ:นั่งเป็นคำนำหน้าsetคำหลัก? จำเป็นหรือไม่ มันดูไม่เหมือนคอมเม้นท์ ..
Stephane

@Stephane :คำนำหน้าหมายถึงมันทำในโหมดคำสั่ง แต่คุณไม่จำเป็นต้องมี:เมื่อเขียน vimrc ของคุณ
TankorSmash

นั่นไม่ใช่ความคิดที่ดีจริงๆ ด้านบนของการให้ไฟล์เหล่านี้อยู่ใน temp / folder นั้นดีกว่ามาก
MonsieurMan

36

; เพื่อให้ผู้ใช้ Windows กลับไปที่ไดเรกทอรีชั่วคราว

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

6
ฉันต้องเพิ่มการตั้งค่า undodir = C: \ WINDOWS \ Temp

สิ่งนี้ไม่ได้ผลสำหรับฉัน - ฉันต้องใช้ set dir = $ TEMP แทน
Frank Schmitt

10

ฉันสร้างปลั๊กอินชื่อ "noswapsuck" ซึ่งเปิดใช้งาน swapfile เฉพาะเมื่อบัฟเฟอร์มีการเปลี่ยนแปลงที่ไม่ได้บันทึก เมื่อบันทึกการเปลี่ยนแปลงแล้ว swapfile จะถูกล้าง ดังนั้น swapfiles ซึ่งมีเนื้อหาเหมือนกับไฟล์บนดิสก์จะถูกลบออก

รับที่นี่: noswapsuck.vim

มันทำงานได้ดีสำหรับฉัน แต่ฉันไม่เคยเผยแพร่มาก่อนดังนั้นฉันจึงยินดีรับข้อเสนอแนะ

ข้อดี:

  • swapfiles เดียวที่เหลืออยู่ในดิสก์ของคุณจะเป็น swapfiles สำคัญที่แตกต่างจากไฟล์จริง ๆ !

ข้อเสีย:

  • หากบัฟเฟอร์มี swapfile จะไม่ถูกตรวจพบเมื่อเปิดไฟล์ครั้งแรก มันจะถูกตรวจพบเมื่อswapfileเปิดใช้งานซึ่งเป็นเมื่อคุณเริ่มที่จะแก้ไขบัฟเฟอร์ สายนี้น่ารำคาญและจะขัดจังหวะคุณ (แก้ไขแล้ว: ตอนนี้เราตรวจสอบ swapfile ที่มีอยู่แล้วก่อนเมื่อบัฟเฟอร์ถูกเปิดโดยเปิดswapfileตัวเลือกอีกครั้งชั่วคราว)

  • หากคุณกำลังทำงานในสภาพแวดล้อมที่คุณต้องการลดขนาดการเขียนดิสก์ (เช่นพลังงานต่ำหรือไฟล์ที่ติดตั้งผ่านเครือข่ายหรือแก้ไขไฟล์ขนาดใหญ่) ดังนั้นจึงไม่เหมาะที่จะทำการลบและสร้างไฟล์ swap ใหม่ทุกครั้ง บันทึกและแก้ไข ในสถานการณ์เช่นนี้คุณสามารถทำได้:

    :let g:NoSwapSuck_CloseSwapfileOnWrite = 0
    

    ซึ่งจะเก็บ swapfile หลังจากการเขียน แต่จะยังคงลบออกเมื่อบัฟเฟอร์เสียโฟกัส

ยังไงก็ตามฉันมีปลั๊กอินอีกเล็กน้อย:DiffAgainstFileOnDiskซึ่งอาจมีประโยชน์หลังจากกดปุ่ม(r)ecoverเพื่อตรวจสอบว่าบัฟเฟอร์ที่คุณกู้คืนนั้นใหม่กว่าหรือเก่ากว่าไฟล์ที่มีอยู่หรือเหมือนกันกับมัน



5

คำตอบนี้ใช้กับการใช้ gVim บน Windows 10 ฉันไม่สามารถรับประกันผลลัพธ์เดียวกันสำหรับระบบปฏิบัติการอื่น

เพิ่ม:

set nobackup
set noswapfile
set noundofile

ไปยังไฟล์ _vimrc ของคุณ

หมายเหตุ: นี่เป็นคำตอบสำหรับคำถามโดยตรง (สำหรับ Windows 10) และอาจไม่ใช่สิ่งที่ปลอดภัยที่สุด (อ่านคำตอบอื่น ๆ ) แต่นี่เป็นวิธีแก้ปัญหาที่เร็วที่สุดในกรณีของฉัน


0

ฉันมีการตั้งค่านี้ใน Ubuntu .vimrc ของฉัน ฉันไม่เห็นไฟล์สลับใด ๆ ในไฟล์โครงการของฉัน

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.