ปิดใช้งานการสร้างไฟล์ swap ในกลุ่ม


216

มีวิธีปิดการใช้งาน.swpการสร้างไฟล์ในกลุ่มหรือไม่? หรืออย่างน้อยก็สร้างพวกเขาทั้งหมดในที่เดียวเพื่อให้ฉันสามารถค้นหาและลบได้อย่างง่ายดาย

ฉันพบว่ามันน่ารำคาญเป็นพิเศษเมื่อฉันคัดลอกไดเรกทอรีหลักขณะแก้ไขในเวลาเดียวกัน แน่นอนฉันรู้ว่าฉันสามารถใช้ find -exec เพื่อค้นหาและลบได้ แต่ฉันต้องการทางออกที่เป็นประโยชน์มากกว่า



คำตอบ:


255

หากต้องการปิดใช้งานการสลับไฟล์จากภายในกลุ่มให้พิมพ์

:set noswapfile

หากต้องการปิดใช้งานการสลับไฟล์อย่างถาวรให้เพิ่มด้านล่างลงใน~/.vimrcไฟล์ของคุณ

set noswapfile

สำหรับรายละเอียดเพิ่มเติมโปรดดูVim docs บน swapfile


6
ไฟล์สวอปนั้นดีหากตัวแก้ไขของคุณขัดข้อง (ไฟดับ ฯลฯ ) เพียงจำไว้
koonse

1
ตัวเลือกอื่นยังคงใช้ไฟล์สลับ แต่เก็บไว้ในหน่วยความจำดังนั้นมันจะไม่เขียนฮาร์ดดิสก์ สิ่งนี้ไม่สามารถป้องกันคุณจากการสูญเสียไฟล์ในระหว่างที่ไฟดับ แต่ถ้าคุณเปิดไฟล์เดียวกันใน anther vim มันจะบอกคุณทันที คำสั่งคือ: set directory = / dev / shm
webbertiger

คำตอบของ trusktrช่วยให้คุณสามารถเก็บข้อได้เปรียบของไฟล์ swap ในขณะที่แก้ไขข้อกังวลของ OP
jpaugh

จากภายในเป็นกลุ่มคุณยังสามารถปิดการใช้งาน swapfile ขณะเปิดไฟล์::noswapfile edit /path/to/file
Torkel Bjørnson-Langen

ปรัชญาส่วนบุคคลของฉันเกี่ยวกับการสูญเสียข้อมูลคือ DBAB และประหยัดบ่อย ...
Samy Bencherif

156

ตั้งค่าตัวแปรต่อไปนี้ใน. vimrc หรือ / etc / vimrc เพื่อให้ vim put swap, backup และ undo files ในตำแหน่งพิเศษแทนที่จะเป็นไดเร็กตอรี่สำหรับทำงานของไฟล์ที่กำลังแก้ไข:

set backupdir=~/.vim/backup//
set directory=~/.vim/swap//
set undodir=~/.vim/undo//

การใช้เครื่องหมายสแลชท้ายคู่ในพา ธ จะบอกกลุ่มเพื่อเปิดใช้งานคุณลักษณะที่จะหลีกเลี่ยงการชนชื่อ ตัวอย่างเช่นหากคุณแก้ไขไฟล์ในที่เดียวและอีกไฟล์ในอีกที่หนึ่งและทั้งสองไฟล์มีชื่อเหมือนกันคุณไม่ต้องการให้มีการชนกันของชื่อใน ~ / .vim / swap / หากคุณระบุ ~ / .vim / swap // ด้วยเครื่องหมายสแลชสองตัว vim จะสร้างไฟล์ swap โดยใช้พา ธ ทั้งหมดของไฟล์ที่ถูกแก้ไขเพื่อหลีกเลี่ยงการชน (สแลชในพา ธ ของไฟล์จะถูกแทนที่ด้วยเครื่องหมายเปอร์เซ็นต์%)

ตัวอย่างเช่นหากคุณแก้ไข /path/one/foobar.txt และ /path/two/foobar.txt คุณจะเห็นไฟล์ swap สองไฟล์ใน ~ / .vim / swap / ที่ชื่อ% path% one% foobar.txt และ% path% two% foobar.txt ตามลำดับ


นอกจากนี้คุณยังสามารถเพิ่มบางครั้งไฟล์สำรองข้อมูลที่บันทึกไว้อาจบันทึกสกิน devs
Bartek Skwira

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

@LelaDax True ส่วนใหญ่ไฟล์เหล่านี้ส่วนใหญ่ไม่มีประโยชน์เพราะฉันใช้ git สำหรับ source code ทั้งหมดของฉัน ในโอกาสที่หายาก (เช่นความผิดพลาด) พวกเขามีประโยชน์ แต่จริงๆแล้วประวัติศาสตร์การเลิกทำของฉันใช้บ่อยมาก มันง่ายกว่ามากในการนำทางที่รวดเร็วกว่าการตรวจสอบคอมไพล์เพื่อดูประวัติก่อนหน้า gundo ทำให้มันดีและง่ายต่อการนำทางต้นไม้เลิกทำ ฉันสามารถอยู่ได้โดยปราศจากไฟล์ swap และ backup
trusktr

26
เพียงแค่ FYI สำหรับคนที่ยังใหม่ (เช่นฉันฮ่า ๆ ... ) คุณต้องไปที่ ~ / .vim / และสร้างไดเรกทอรีด้วยตัวเอง มันจะไม่สร้างอัตโนมัติให้คุณ
aug

1
คุณสามารถเขียนโค้ดใน vimrc ของคุณเพื่อสร้างโฟลเดอร์ให้คุณโดยอัตโนมัติซึ่งเป็นสิ่งที่ฉันได้ทำลงไปแล้ว ดังนั้นในระบบใหม่ฉันเพิ่งได้รับ vimrc และดูแลส่วนที่เหลือ
trusktr

42

ฉันพบคำตอบที่นี่ :

vim -n <file>

เปิดไฟล์โดยไม่มี swapfile

นอกจากนี้:

set dir=/tmp

ในการ.vimrcสร้าง swapfiles /tmpใน


แล้ว*.ext~ไฟล์สำรองล่ะ มีตัวเลือกบรรทัดคำสั่งเพื่อปิดการใช้งานพวกเขาเช่นกัน?
Salman von Abbas

มันมีประโยชน์มากสำหรับไฟล์ขนาดใหญ่แบบครั้งเดียว! ขอบคุณ
เฟลิเป้อัลวาเรซ

28

นี่คือการตั้งค่าการสำรองข้อมูลส่วนตัว ~ / .vimrc ของฉัน

" backup to ~/.tmp 
set backup 
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set backupskip=/tmp/*,/private/tmp/* 
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp 
set writebackup

13

ฉันเห็นด้วยกับผู้ที่ถามว่าทำไมกลุ่มเรียกร้องความต้องการทั้งหมด 'การกู้คืนความเสียหาย' เมื่อไม่มีโปรแกรมแก้ไขข้อความอื่นรบกวน ฉันไม่ต้องการเป็นกลุ่มสร้างไฟล์พิเศษใด ๆ ในไดเรกทอรีของไฟล์ที่แก้ไขเมื่อฉันแก้ไขมันขอบคุณมาก ด้วยเหตุนี้ฉัน_vimrcจึงปิดการใช้งานไฟล์ swap และย้ายไฟล์ 'backup' ที่น่ารำคาญไปยัง Temp dir:

" Uncomment below to prevent 'tilde backup files' (eg. myfile.txt~) from being created
"set nobackup

" Uncomment below to cause 'tilde backup files' to be created in a different dir so as not to clutter up the current file's directory (probably a better idea than disabling them altogether)
set backupdir=C:\Windows\Temp

" Uncomment below to disable 'swap files' (eg. .myfile.txt.swp) from being created
set noswapfile

9
ฉันคิดว่าความจริงที่ว่าผู้แก้ไขรายอื่นไม่ใส่ใจกับสิ่งนี้สะท้อนให้เห็นถึงตัวแก้ไขอื่น ๆ ที่แย่กว่าตัวสะท้อนที่แย่เมื่อ vi (m) ทางเลือกที่จะทำให้ไดเรคทอรีเดียวกันนี้เป็นที่ตั้งเริ่มต้นสำหรับวางไฟล์เหล่านี้เป็นโชคร้ายเล็กน้อย แต่อย่างน้อยก็สามารถป้องกันได้เล็กน้อย (เช่นในสภาพแวดล้อมแบบ multiserver ที่มีการติดตั้งข้ามสูงอาจไม่ชัดเจนว่าจะหาไฟล์กู้คืนได้ที่ไหนในเวลาที่คุณต้องการอย่างเร่งด่วนที่สุด)
Domingo Ignacio

3
การจัดการ swapfile ของ Vim นั้นแย่มาก ฉันได้ใช้มันเพื่อกู้คืนข้อมูลที่สูญหายอาจ 5 ครั้ง แต่ฉันมีความยุ่งยากในการกู้คืน swapfile ได้ประมาณ 9,000 ครั้งซึ่งเหมือนกันกับไฟล์อยู่ตลอดเวลาหรือแย่กว่าเวอร์ชันที่ล้าสมัย มันอาจเป็นคุณสมบัติที่ดีถ้ากระบวนการกู้คืนไม่ได้แย่ขนาดนั้น recovery.vim ช่วยได้นิดหน่อย แต่ก็ยังมีการโต้ตอบมากเกินไป
joeytwiddle

3
ข้อความ Sublime disaster recoveryมี ฉันรักมัน! ฉันไม่จำเป็นต้องบันทึกไฟล์เมื่อฉันดำเนินการเปลี่ยนแปลงใด ๆ ที่ฉันทำบันทึกหรือไม่ถูกดึงกลับขึ้นมา
leetNightshade

ฉันมีคำสั่งอัตโนมัติอย่างง่ายที่เขียนการเปลี่ยนแปลงทั้งหมดทันทีที่ทำขึ้นทำให้ทั้ง swapfiles และการสำรองข้อมูลไร้ประโยชน์
tbodt

2
@ TorkelBjørnson-Langen อาจเป็นความผิดของฉันในการรีบูตเครื่องโดยไม่ต้องปิดเซสชัน Vim ทั้งหมดของฉันและจากนั้นก็หวาดระแวงเกี่ยวกับการกู้คืนไฟล์ที่ถูกต้องจริง อย่างไรก็ตามฉันพยายามทำให้ดีที่สุดทั้งสองโลกโดยการเขียนปลั๊กอินที่เก็บรักษา swapfile เมื่อมีการแก้ไขที่ไม่ได้บันทึก: vim-swap-is-awesome.vim
joeytwiddle

7

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

set backupdir=~/.vim/backup/
set directory=~/.vim/backup/

3
คุณควรเพิ่มเครื่องหมายสแลชสองครั้ง//ที่ส่วนท้ายของพา ธ เพื่อให้คุณสามารถแก้ไขไฟล์สองไฟล์ด้วยชื่อเดียวกันในเวลาเดียวกัน
Samuel O'Malley

ขอบคุณ @ SamuelO'Malley // ทำอะไร
ขาวดำ

ลองดู:help directoryว่าคุณต้องการอ่านเอกสารเกี่ยวกับเรื่องนี้หรือไม่ เฉือนคู่บอกว่าเป็นกลุ่มในการเข้ารหัสเส้นทางที่เต็มรูปแบบของไฟล์ลงในชื่อไฟล์แลกเปลี่ยนของเช่นมากกว่าแค่%home%sam%dotfiles%.gitignore.swp .gitignore.swp
Samuel O'Malley

3

หากคุณใส่set directory=""ไฟล์ exrc ของคุณคุณจะปิดไฟล์ swap อย่างไรก็ตามการทำเช่นนั้นจะปิดการใช้งานการกู้คืน

ข้อมูลเพิ่มเติมที่นี่


3

หากคุณกำลังใช้gitคุณสามารถเพิ่มการ*.swp.gitignore


ฉันคิดว่านั่นเป็นสิ่งที่ผู้ใช้ส่วนใหญ่ต้องการ! การปิดการแลกเปลี่ยนไฟล์เป็นการฝึกฝนที่ไม่ดี
DenisKolodin

2

สร้างไฟล์แลกเปลี่ยนเป็นกลุ่มสำหรับไฟล์เฉพาะ

autocmd bufenter  c:/aaa/Dropbox/TapNote/Todo.txt :set noswapfile

1
หรือสำหรับไฟล์ทั้งหมดในไดเรกทอรีเฉพาะดังต่อไปนี้ดูเหมือนว่าจะใช้งานได้ (การทดสอบสั้น ๆ เท่านั้น):autocmd bufenter c:/aaa/Dropbox/TapNote/* :set noswapfile
scottkosty

1

สำหรับทุกคนที่พยายามตั้งค่านี้สำหรับโครงการ Rails ให้เพิ่ม

set directory=tmp,/tmp

เป็นของคุณ

~/.vimrc

ดังนั้นไฟล์. swp จะอยู่ในตำแหน่งปกติของพวกเขา - ไดเรกทอรี tmp (ต่อโครงการ)

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