मैं विम के साथ क्रॉस्टैब फ़ाइलों को कैसे संपादित कर सकता हूं (मुझे त्रुटि मिलती है: 'अस्थायी फ़ाइल को जगह में संपादित किया जाना चाहिए')


12

मैं crontabFreeBSD में फ़ाइलों को कैसे संपादित करूं ?

$ crontab -e
# ... I do my thing in vim & :wq

"crontab.9ZcXiFaawt" 6L, 203C written
crontab: temp file must be edited in place
Exit 1

EDITOR=nviकाम करता है ठीक का उपयोग कर ... लिनक्स भी ठीक काम करने लगता है ...

जवाबों:


19

समस्या यह है कि विम फाइल कैसे लिखते हैं। डिफ़ॉल्ट रूप से, यह फ़ाइल की एक प्रतिलिपि बनाता है और मूल एक को अधिलेखित करता है।

आप इसका अवलोकन कर सकते हैं:

# Show the file's inode
$ ls -i a
3156153 a

# Open file in Vim, :wq

# inode changed!
$ ls -i a
3155322 a

crontabइससे भ्रमित हो जाता है (देखें :help crontab)

आपको Vim को मूल फ़ाइल को अधिलेखित :set backupcopyकरने के लिए उपयोग करने की आवश्यकता है yes:

"yes"   make a copy of the file and overwrite the original one

आप इसे अपने साथ crontab फ़ाइलों के लिए स्वचालित रूप से कर सकते हैं:

au FileType crontab setlocal bkc=yes

2

@ मार्टिन का स्व-उत्तर सही है। हालांकि, अपने जैसे लोगों के लिए, जो कभी-कभार अपवादों केvimrc साथ अपनी फ़ाइल को सीमित करने की कोशिश करते हैं, यहाँ एक भिन्नता है - यहाँ एक क्रॉस्टेब एडिट करना, मॉडलिंस का उपयोग करना है। यह अपवादों को सीधे लक्ष्य फ़ाइल में रखने की अनुमति देता है।

नीचे मेरा crontab मॉडल है:

# vim: nu et tw=130 ts=8 sts=4 sw=4 ff=unix fo-=l fo+=tcroq2 bkc=yes

यहां महत्वपूर्ण बिट bkc=yes@ मार्टिन के vimrcविन्यास से मेल खाता है। बाकी व्यक्तिगत सुविधा सेटिंग्स हैं।

यह विचार के लिए पूर्णता और भोजन के लिए कहा गया, @ मार्टिन का प्रारंभिक उत्तर अधिकांश मामलों में सबसे पर्याप्त है।


1

एक ही त्रुटि नहीं बल्कि काफी बार हो रही है:

Error detected while processing /root/.vimrc:
line    2:
E319: Sorry, the command is not available in this version: syntax enable
line    7:
...

यह त्रुटि दिखाई देगी, यदि आप crontab viके vimलिए उपयोग करते हैं । आपको अपनी ~/.bashrcफ़ाइल में निम्न कोड जोड़कर crontab का संपादक सेट करना होगा :

export EDITOR=vim

-1

ऐसा ही OSX पर होता है। समस्या की जांच करने के बाद, मैंने पाया है कि यह सादे के साथ काम करता है vi, लेकिन यह काम नहीं करता है vim

तो तय हो सकता है:

EDITOR=vi crontab -e

हालांकि viआमतौर पर vim(जैसे OSX पर) जुड़ा हुआ है, इसलिए यह एक ही बात है।


इसे आपकी vimrc फ़ाइल में निम्न पंक्ति द्वारा हल किया जा सकता है :

au BufNewFile,BufRead crontab.* set nobackup | set nowritebackup

.Vimrc फ़ाइल में निम्न पंक्तियों को जोड़कर इसके लिए एक और समाधान है :

if $VIM_NOBACKUP
  set nobackup
  set nowritebackup
endif

और कमांड चलाएं:

VIM_NOBACKUP=1 crontab -e

आप निम्न चर को परिभाषित करने का भी प्रयास कर सकते हैं:

EDITOR='VIM_NOBACKUP=1 vim'

स्रोत: crontab: temp फ़ाइल को जगह में संपादित किया जाना चाहिए


इसका कारण यह है कि जिस तरह से करना है vim/ viबैकअप फ़ाइलों का व्यवहार करता है।


1
चूंकि crontabआम तौर पर EDITORया VISUAL(यदि इसे परिभाषित किया गया है) के मूल्य को लिफ्ट करता है, तो आप उन्हें सेट कर सकते हैं EDITOR='VIM_NOBACKUP=1 vim':।
मुरु

@ मरमू मैंने कोशिश की है, लेकिन मुझे नहीं लगता कि यह काम करता है। crontab -eउत्पन्न करता है crontab: VIM_NOBACKUP=1 vim: No such file or directory
केनोरब

1
OSX चीज़ होना चाहिए, क्योंकि यह आर्क लिनक्स और उबंटू, बैश और ज़श पर काम करता है।
मुरु

2
पर्यावरण चर के बारे में सभी प्रकार की बातें मुझे मूर्खतापूर्ण लगती हैं; विम के पास फ़ाइल-विशिष्ट सेटिंग्स से निपटने का एक तरीका है, और इसे ऑटोोकैड्स कहा जाता है। ऐसा लगता है कि आपने इसे लिंक से कॉपी किया है, लेकिन ऐसा लगता है कि उस लेखक के विम से बहुत परिचित नहीं हैं।
मार्टिन Tournoij

2
इसे क्यों शामिल करें? यह काम करने का एक मूर्खतापूर्ण तरीका है, और एक ऑटोकैमड का उपयोग नहीं करने का लगभग एक कारण है। जब हम इसे हटा देते हैं, तो हमें बस ऑटोकैड के साथ छोड़ दिया जाता है, जो कि एक ही उत्तर है जो डेढ़ महीने से अधिक समय से यहां है। इस जवाब में शोर के अलावा और कुछ नहीं है।
मार्टिन टूरनोइज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.