Vim फ़ाइलों को ~ एक्सटेंशन के साथ क्यों सहेजता है?


180

मैंने पाया है कि Windows Vim पर Vim का उपयोग करने पर फ़ाइल सहेजती है, एक .ext.swpफ़ाइल जो विम विंडो और .ext~फ़ाइल को बंद करने पर हटा दी जाती है ।

मुझे लगता है कि .ext.swpफ़ाइल Vim क्रैश की स्थिति में एक सत्र बैकअप है। .ext~हालांकि फ़ाइल का उद्देश्य क्या है ? क्या यह एक स्थायी बैकअप फ़ाइल है? इन डुप्लिकेट्स के बिना, मैं अपने होस्ट पर काम करने वाली सभी फाइलों को कॉपी करना चाहता हूं, यह कष्टप्रद है। मैं इसे कैसे बंद कर सकता हूं या , अगर यह एक अच्छे कारण के लिए है, तो फाइलें छिपाएं ?


क्या आपके पास एक से अधिक स्थानों पर एक साथ कोई फ़ाइल खुली है, वे एक बनाएँगे .ext.swp
dirkgently

2
dirkgently: नहीं, यहाँ पर मैं केवल vim विंडो में एक फ़ाइल खोल सकता हूँ और यह .swp फ़ाइल बना देगा। मैं इस बारे में बहुत ज़्यादा नहीं हूँ कि जब मैं खिड़की को बचाता / बंद करता हूँ तो उसे हटा दिया जाता है।
रॉस

जवाबों:


221

*.ext~फ़ाइल बैकअप फ़ाइल, फ़ाइल वाले के रूप में यह था इससे पहले कि आप संपादित कर दिया है।

*.ext.swpफ़ाइल स्वैप फ़ाइल, जिसमें लॉक फ़ाइल के रूप में कार्य करता है और पूर्ववत करें / फिर इतिहास के साथ-साथ किसी भी अन्य आंतरिक जानकारी विम जरूरतों होता है। दुर्घटना की स्थिति में आप अपनी फ़ाइल को फिर से खोल सकते हैं और विम अपनी पिछली स्थिति को स्वैप फ़ाइल से पुनर्स्थापित कर देगा (जो मुझे सहायक लगता है, इसलिए मैं इसे बंद नहीं करता)।

बैकअप फ़ाइलों के स्वचालित निर्माण को बंद करने के लिए, (अपने vimrc में) का उपयोग करें:

set nobackup
set nowritebackup

कहाँ nowritebackupविम के व्यवहार "सहेजें" डिफ़ॉल्ट है, जो परिवर्तन:

  1. नई फ़ाइल को बफर लिखें
  2. मूल फ़ाइल हटाएं
  3. नई फ़ाइल का नाम बदलें

और Vim को मूल फ़ाइल में लिखता है (परिणामस्वरूप I / O त्रुटि की स्थिति में इसे नष्ट करने का जोखिम होता है)। लेकिन आप इसके साथ विंडोज डेस्कटॉप पर "जंपिंग फाइल" को रोकते हैं, जो मेरे लिए प्राथमिक कारण nowritebackupहै।


7
+1 के लिए you prevent "jumping files" on the Windows desktop। गूगलेड और इस जवाब को मिला
मर्लिन मॉर्गन-ग्राहम

1
वास्तव में - क्या मेरे पास दोनों है nobackupऔर nowritebackup? क्या बैकअप के रूप में फ़ाइल की एक प्रति लिखने का एक तरीका है, लेकिन क्या यह सामान लिखना / हटाना / नाम बदलना नहीं है?
मेरलिन मॉर्गन-ग्राहम

@ मर्लिन: यदि आपके पास backup(विरोध के अनुसार nobackup) है, तो विम एक बैकअप ( *.ext~फ़ाइल) बनाएगा । यह पूरी तरह से असंबंधित है nowritebackup
तोमलाक

6
उन स्विच के संयोजन के बीच विभिन्न व्यवहार का वर्णन करने वाली एक तालिका है help backup-table:। यह न तो सेटिंग करता है nobackupऔर न ही nowritebackup, बल्कि सेटिंग backupcopy=yesभी "कूद" समस्या को हल करता है। यह पर्फ़, हालांकि दर्द हो सकता है, इसलिए प्रत्येक अपने स्वयं के लिए
Merlyn मॉर्गन-ग्राहम

27
इसके बजाय बंद करने के लिए, एक निर्देशिका set backupdir=~/.vim/backupमें .vimrc या
_vimrc

224

मुझे लगता है कि बेहतर समाधान इन लाइनों को अपनी vimrc फ़ाइल में रखना है

set backupdir=~/vimtmp//,.
set directory=~/vimtmp//,.

पहली पंक्ति बैकअप फ़ाइलों के लिए है, दूसरी पंक्ति स्वैप फ़ाइलों के लिए है। अंत में डबल स्लैश यह सुनिश्चित करता है कि एक ही नाम वाली दो फ़ाइलों के मामले में कोई संघर्ष नहीं है, टिप्पणियां देखें (इस संपादन के समय यह विकल्प केवल स्वैप फ़ाइलों के लिए सम्मानित किया गया है, बैकअप फ़ाइलों के लिए अभी तक नहीं है )। यदि वर्तमान मौजूद नहीं है, तो वर्तमान निर्देशिका का उपयोग करने की ,.अनुमति दें vim

आपको अपने होम डायरेक्टरी में एक डायरेक्टरी बनानी होगी जिसे इस काम के लिए vimtmp कहा जाता है। इसके अलावा, जांचें कि बैकअप आपके कॉन्फ़िगरेशन में सक्षम हैं ( set backupयदि नहीं तो जोड़ें )।

इस तरह से आपको दोनों दुनियाओं का लाभ मिलता है, आपको फाइलें देखने की जरूरत नहीं है, लेकिन अगर कुछ गड़बड़ हो जाए तो आप अपनी बैकअप फाइल को vttmp से प्राप्त कर सकते हैं। निर्देशिका को हर बार साफ करना न भूलें।


22
+1 मेरा वास्तव में ~ / .vim / tmp पर सेट है, लेकिन किसी भी तरह से, इसने एक से अधिक अवसरों पर मेरी गांड को बचाया है।
जेसी यमोकोस्की

11
तुमको क्यों चाहिए ,। प्रत्येक पंक्ति के अंत में?
पिंडली

9
@shim विम पहले उपलब्ध डायर का उपयोग करेगा, इसलिए इस मामले में अगर ~ / vttmp मौजूद नहीं है तो यह वर्तमान कार्य निर्देशिका का उपयोग करेगा
xixixao

3
@SalmanPK एक आदर्श दुनिया में, आपको सार्वजनिक रूप से सुलभ सर्वरों पर सीधे कॉन्फ़िगरेशन फ़ाइलों का संपादन नहीं करना चाहिए
स्कोर

12
पथ के अंत में दो स्लैश का उपयोग करें। उदाहरण के लिए, backupdir = ~ / .vim / .backup // सेट करें - निर्देशिका के अंत में "//" का अर्थ है कि फ़ाइल नाम पूर्ण पथ से फ़ाइल तक सभी पथ विभाजकों के साथ प्रतिशत में प्रतिस्थापित किया जाएगा "%" " संकेत। यह संरक्षित निर्देशिका में फ़ाइल नाम विशिष्टता सुनिश्चित करेगा।
हैकनाइटली

25

उन फ़ाइलों को बंद करने के लिए, बस इन लाइनों को .vimrc (यूनिक्स आधारित ओएस पर विम कॉन्फ़िगरेशन फ़ाइल) में जोड़ें:

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
:set nobackup 

बैकअप बंद कर देंगे। यदि आप अभी भी उन बैकअप फ़ाइलों को एक केंद्रीय फ़ोल्डर में चाहते हैं, तो आप एक बैकअप भी सेट कर सकते हैं। इस तरह से आपकी वर्किंग डायर ~ फाइलों से अटे नहीं है।

आप के तहत बैकअप पर अधिक जानकारी पाते हैं : वह बैकअप


12

और आप एक अलग बैकअप एक्सटेंशन भी सेट कर सकते हैं और उन बैकअप को बचाने के लिए (मैं ~/.vimbackupsलिनक्स पर पसंद करता हूं )। मैं "संस्करणित" बैकअप का उपयोग करता था, इसके द्वारा:

au BufWritePre * let &bex = '-' . strftime("%Y%m%d-%H%M%S") . '.vimbackup'

यह एक डायनेमिक बैकअप एक्सटेंशन ( ORIGINALFILENAME-YYYYMMDD-HHMMSS.vimbackup) सेट करता है ।


3
आप शामिल करना चाह सकते हैं कि बैक अप डायरेक्टरी कैसे सेट करें, यानी set backupdir=~/.vimbackupsअपने ~ / .vimrc
rampion

1
विम तकनीक पूरी तरह से इस तकनीक का वर्णन करती है। देखें:help backupext
netJff

8

इस लाइन को अपने में रखें vimrc:

set nobk nowb noswf noudf " nobackup nowritebackup noswapfile noundofile


में यह होगा:

C:\Program Files (x86)\vim\_vimrc

सभी उपयोगकर्ताओं के लिए सिस्टम-वाइड विम कॉन्फ़िगरेशन के लिए फ़ाइल।

संपादन के बाद टिल्डा फ़ाइलों noundofileके निर्माण को रोकने के लिए विंडोज में अंतिम एक सेट करना महत्वपूर्ण है *~


काश, विम के पास वह रेखा होती जो डिफ़ॉल्ट रूप से शामिल होती। किसी को बदसूरत निर्देशिका पसंद नहीं है।

उपयोगकर्ता को यह चुनने दें कि क्या और कैसे वह पहले उन्नत बैकअप / पूर्ववत फ़ाइल सुविधाओं को सक्षम करना चाहता है।

यह विम का सबसे कष्टप्रद हिस्सा है।

अगला कदम हो सकता है:

set noeb vb t_vb= " errorbells visualbell

में beeping को निष्क्रिय करने के लिए भी :-)


इस के लिए बहुत बहुत धन्यवाद! "नूडोफाइल" वह विकल्प था जो आखिरकार उस ईश्वर-भयानक कूड़े से छुटकारा पा गया। (और आप अपनी पोस्ट में आपके द्वारा लिखी गई अन्य सभी चीज़ों से 100% सहमत हैं!)
pwmusic

6

आप सही हैं कि .swpफ़ाइल का उपयोग लॉकिंग के लिए और रिकवरी फ़ाइल के रूप में किया जाता है।

set nobackupयदि आप इन फ़ाइलों को नहीं चाहते हैं तो अपने vimrc में डालने का प्रयास करें। यदि आप संपूर्ण स्कूप चाहते हैं, या इसके बजाय .bak फ़ाइलें चाहते हैं, तो विभिन्न बैकअप से संबंधित विकल्पों के लिए Vim डॉक्स देखें ...


लॉक फ़ाइल के रूप में उद्देश्य का उल्लेख करने के लिए +1। मैंने ऐसा नहीं सोचा था।
तोमलक

5

मेरे लिए काम करने का एकमात्र विकल्प इस लाइन को मेरी ~ / .vimrc फ़ाइल में डालना था

noundofile सेट करें

बैकअप फ़ाइलों का संदर्भ देने वाले अन्य विकल्प ~ (tilde) में समाप्त होने वाली अस्थायी फ़ाइलों के निर्माण को रोक नहीं पाए


यह आखिरकार मेरे लिए काम कर गया। अन्य उत्तरों में इसका उल्लेख क्यों नहीं किया गया है? यह हटाता है: .<filename>.un~फाइलें जबकि अन्य विकल्प केवल <filename>~फाइलों को हटाते हैं ।
JLT

0

मुझे set noundofile~ _gvimrc पर जोड़ना था

"~" निर्देशिका को cd ~कमांड के साथ निर्देशिका को बदलकर पहचाना जा सकता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.