मैं सभी उपयोगकर्ता कॉन्फ़िगरेशन को अनदेखा करने के लिए विम कैसे प्राप्त कर सकता हूं, जैसे कि यह ताज़ा स्थापित किया गया था?


21

यह सुनिश्चित करने के लिए कि व्यवहार मेरे व्यक्तिगत कॉन्फ़िगरेशन से प्रभावित नहीं है, मैं विम को इस तरह से शुरू करना चाहता हूं जो मेरे सभी उपयोगकर्ता-स्थापित कॉन्फ़िगरेशन फ़ाइलों को अनदेखा करता है , जैसे कि विम को पहली बार ताज़ा स्थापित किया गया था और उपयोगकर्ता ने इसे चलाया था हाथोंहाथ।

यह एफएक्यू में संबोधित किया गया है जो बताता है कि उत्तर निम्नलिखित कमांड से शुरू करना है:

vim -u NONE -U NONE -N -i NONE

यह वहाँ से अधिकांश तरीके से हो जाता है , लेकिन runtimepathविकल्प में अभी भी शामिल है ~/.vimऔर, विशेष रूप से ~/.vim/after, (इसलिए यदि मैं बाद में फ़ाइल प्रकार का पता लगाने और फ़ाइल प्रारूप को बदल दूं, तो कोड ~/.vim/after/syntax/the_relevant_filetype.vimनिष्पादित हो जाएगा)।

मैं स्टार्टअप पर निम्न आदेशों को लागू करके इस विशिष्ट समस्या को हल कर सकता हूं *:

:set runtimepath-=~/.vim
:set runtimepath-=~/.vim/after

... लेकिन मुझे यकीन नहीं है कि अगर:

  1. यह एक मजबूत समाधान है: क्या वे एकमात्र मार्ग हैं जो उपयोगकर्ता-कॉन्फ़िगरेशन को प्रभावी बनाने का कारण बन सकते हैं? क्या कुछ और है जिसके बारे में मैंने नहीं सोचा है?
  2. वांछित परिणाम प्राप्त करने का एक बेहतर तरीका है।

* खोल --cmdया -u vimrcतर्क का उपयोग करके , या बस उन्हें मैन्युअल रूप से टाइप करके।

संपादित करें : यहाँ समस्या को हल करने का एक विशिष्ट उदाहरण है। (हालांकि मैं किसी भी अन्य संभावित मुद्दों को ठीक करने के लिए समाधान चाहूंगा जो मैंने अभी तक सामना नहीं किया है।):

  1. एक फाइल बनाएं ~ / .vim / after / ftplugin / c.vim, जिसमें सामग्री है:

    noremap i :echom "This is not default behaviour"<CR>
    

    अब हमारे पास कुछ उपयोगकर्ता-स्थापित कॉन्फ़िगरेशन हैं जिन्हें हम अनदेखा करना चाहते हैं। एफएक्यू द्वारा सुझाए गए समाधान का परीक्षण करें।

  2. कमांड के साथ Vim चलाएं:

    vim -u NONE -U NONE -N -i NONE
    
  3. कमांड दर्ज करें:

    :filetype plugin on
    :set ft=c
    i
    

वांछित व्यवहार : विम को इन्सर्ट मोड में प्रवेश करना चाहिए। यदि कोई उपयोगकर्ता कॉन्फ़िगरेशन मौजूद नहीं है तो यह क्या करेगा।

देखा गया व्यवहार : विम प्रिंट "यह डिफ़ॉल्ट व्यवहार नहीं है"


यूनिक्स जैसी प्रणाली पर, यदि आप क्या करते हैं HOME=/dev/null vim -u NONE:?
मूरू

@ मरमू अच्छा विचार है, और शायद एक जवाब के रूप में जोड़ने लायक है, लेकिन यह सही नहीं है । आप स्पष्ट रूप से उदाहरण के लिए क्षमता खो देते हैं :cd ~, लेकिन viminfoफ़ाइल का डिफ़ॉल्ट स्थान $ HOME में है, जो E138 का कारण बन सकता है। मुझे लगता है कि एक नई, खाली निर्देशिका बनाने और $ HOME के ​​लिए इसका उपयोग करना सबसे अच्छा समाधान हो सकता है।
रिच

@ मरमू मेरे पास बस इतना हुआ कि अगर आप $ HOME सेट कर रहे हैं, तो संभवतः आपको निर्दिष्ट करने की आवश्यकता नहीं है -u NONE?
रिच

1
किस मामले में /tmpबेहतर हो सकता है, यह मेरा पहला विचार था, लेकिन फिर मैंने ब्लैक होल के रूप में चुना / देव / अशक्त। ... या कुछ ऐसा HOME=$(mktemp -d) vim ...
मुरु

यदि आप उपयोग नहीं करते हैं तो क्या यह सिस्टम vimrc नहीं पढ़ेगा -u NONE? निर्भर करता है कि आपको किस व्यवहार की आवश्यकता है, मुझे लगता है।
मुरु

जवाबों:


16

Vim 8.0.1554 के रूप में (दुर्भाग्य से अभी तक Neovim नहीं), आप उपयोग कर सकते हैं vim --clean। इस विधि द्वारा की सिफारिश की है :help bugs

:help --clean डॉक्स:

"-U DEFAULTS -U NONE -i NONE" के समान:
- फ़ाइलों और पर्यावरण चर से आरंभ को छोड़ दिया जाता है
- 'runtimepath' और 'packpath' को घर निर्देशिका प्रविष्टियों को बाहर करने के लिए सेट किया जाता है (-U DEFAULTS के साथ नहीं होता है)।
- | defaults.vim | स्क्रिप्ट भरी हुई है, जिसका तात्पर्य है 'निकोम्पैटिबल': विम डिफॉल्ट्स का उपयोग करें
- नहीं | gvimrc स्क्रिप्ट भरी हुई है
- कोई viminfo फ़ाइल नहीं पढ़ी या लिखी गई है


1
अच्छा! यह $HOMEचर के साथ खिलवाड़ करने की तुलना में बहुत सरल है । गुडजॉब विम डेवलपर्स। और उत्तर के लिए धन्यवाद!
रिच

1
--cleanneovimअब मास्टर पर भी काम करता है ( github.com/neovim/neovim/commit/… , 0.4.0 में शामिल किया जाना है), लेकिन होम डायरेक्टरी को बाहर नहीं करता है।
क्रिश्चियन क्लैसन

(अभी तक, उस पैच को पोर्ट किए जाने की प्रतीक्षा है)
क्रिश्चियन क्लैसन

11

उपयोगकर्ता-विशिष्ट फ़ाइलों को समाप्त करने का एक तरीका अलग मूल्य का उपयोग करना होगा $HOME। कुछ भी पढ़ने, या लिखने के लिए अनुमति देने के लिए (जैसे viminfo), आप उपयोग कर सकते हैं /dev/null:

HOME=/dev/null vim -u NONE

यह त्रुटियों के बारे में कारण देगा viminfo, इसलिए, इसके बजाय आप एक अस्थायी फ़ोल्डर बना सकते हैं, या किसी मौजूदा एक (जैसे /tmp) का उपयोग कर सकते हैं :

HOME=$(mktemp -d) vim -u NONE

इस तरह के एक साथ $HOME, -u NONE, की जरूरत नहीं किया जा सकता है आपके व्यवस्थापक के पूरे सिस्टम पर जोड़ा गया है पर निर्भर करता है vimrc। उदाहरण के लिए, सभी प्रयोगशाला प्रणालियों मैं प्रशासन के पर, मैं जोड़ा एक /etc/vim/vimrc.local(पैक विम के डिफ़ॉल्ट रूप से sourced /etc/vim/vimrc) है nocompatible, syntaxआदि, सेट, और filetype onसाथ ही।


3
vim -i NONE लोडिंग विमिनोफ को रोकने के लिए
क्रिश्चियन

1

मैं इसका ज्यादा जवाब नहीं दे सकता, लेकिन एक बिंदु जो मैंने उल्लेख नहीं किया है, और शीर्षक में जो है उसकी एक व्याख्या का जवाब देना

मैं सभी उपयोगकर्ता कॉन्फ़िगरेशन को अनदेखा करने के लिए विम कैसे प्राप्त कर सकता हूं, जैसे कि यह ताज़ा स्थापित किया गया था?

कुछ ने सुझाव दिया है vim -u NONE याvim -u NORC

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

ऐसा इसलिए है क्योंकि विम पहले एक डिफॉल्ट कॉन्फिग लोड करता है।

आप अपने डिफ़ॉल्ट फ़ाइल के प्रभाव को खाली होने के लिए उस डिफ़ॉल्ट फ़ाइल पर विम को इंगित कर सकते हैं। जाँचें कि आपके पास है /etc/vim/vimrc, और आप कर सकते हैं vim -u /etc/vim/vimrc या osx पर, डिफ़ॉल्ट फ़ाइल है/usr/share/vim/vicmrc


मुझे लगता है कि वास्तव में यही आपके लिए क्या करेगा।
quemeraisc

@quemeraisc vim --cleanलोड होगा defaults.vim। यह उत्तर सिस्टम vimrc (देखें :help system-vimrc।) का जिक्र है , जो मुझे लगता है कि लोड नहीं है vim --clean
रिच

@barlap: चूक के साथ भ्रम से बचने के लिए (देखें :help defaults.vim), इस उत्तर में शब्दों default configको बदलने के लिए बेहतर हो सकता है system vimrc। या इससे भी बेहतर, उत्तर में दोनों पर चर्चा करें!
रिच

0

से विम-पूछे जाने वाले प्रश्न 2.5 :

2.5। मुझे विम के साथ "xyz" (कुछ) समस्या है। मैं यह कैसे निर्धारित करूं कि यह मेरे सेटअप के साथ या विम के साथ एक समस्या है? / क्या मुझे विम में एक बग मिला है?

सबसे पहले, आपको यह पता लगाने की आवश्यकता है कि क्या त्रुटि वास्तविक रनटाइम फ़ाइलों में है या कोई भी प्लगइन जो विम के साथ वितरित किया गया है या क्या यह आपके .vimrc या .gvimrc से किसी भी कॉन्फ़िगरेशन विकल्प का एक सरल साइड इफेक्ट है। तो पहले इस तरह शुरू करो:

vim -u NONE -U NONE -N -i NONE

यह बिना किसी कॉन्फ़िगरेशन फ़ाइल (-N NONE को न पढ़ने के लिए -u Nimrc फ़ाइल और -U NONE को एक .gvimrc फ़ाइल नहीं पढ़ने के लिए) को पढ़े बिना, आपके viminfo फ़ाइल (-i NONE) को पढ़े बिना, nocompatible मोड (-N) में शुरू होता है। यहां तक ​​कि प्लगइन।


1
एफएक्यू में होने के बावजूद, यह वास्तव में काम नहीं करता है, प्रश्न में वर्णित कारणों के लिए।
रिच

@ सवाल पर अपनी टिप्पणी से: ensure that none of the behaviour I'm seeing is caused by user config- तब ऐसा लगता है कि आप ठीक वही करने का प्रयास कर रहे हैं जो इस FAQ में बताया जा रहा है। मैंने आपके प्रश्न को फिर से पढ़ा है और अभी भी समझ में नहीं आया कि आपके द्वारा बताए गए कारण क्या हैं।
mMontu 18

मैं वास्तव में वही करने की कोशिश कर रहा हूं जो एफएक्यू में बताया जा रहा है। लेकिन यह जो समाधान देता है वह runtimepathसेटिंग के कारण काम नहीं करता है ।
रिच

वास्तव में क्या गलत है runtimepath? यह इस विकल्प के लिए डिफ़ॉल्ट जैसा लगता है, जैसा कि इसमें बताया गया है :help rtp। यह मूल्य आपके परीक्षण को कैसे प्रभावित कर रहा है?
mMontu

@ मेरा मतलब है, क्या आप किसी नए अंतर की तुलना करते समय कोई अंतर देखते हैं जब आप फ़ाइल का पता लगाना चालू करते हैं?
mMontu
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.