जब कोई फ़ाइल नाम नहीं दिया जाता है, तो मैं विम को डिफ़ॉल्ट फ़ाइल नाम का उपयोग कैसे करूँ?


17

मैं शायद ही कभी, अगर कभी, सिर्फ vimफ़ाइल नाम के बिना खुला । अक्सर पर्याप्त, मैं कुछ बाहर परीक्षण करना चाहता हूं, आमतौर पर एक त्वरित फेंकने वाली स्क्रिप्ट, और मैं आमतौर पर उनका नाम test.sh(या कुछ संस्करण, जैसे test.py)। यदि मैं बिना किसी फ़ाइल नाम के भाग गया तो क्या मैं vimएक test.shफ़ाइल नाम मान सकता हूँ vim? मैं आमतौर पर उपनामों का उपयोग करता हूं (जैसे vimsकि vim test.shऔर इसके vimpलिए vim test.py, या पूरे जाओ :w test.sh), लेकिन मुझे आश्चर्य है कि अगर भीतर से कोई रास्ता है vim। यह बेहतर होगा अगर मैं इसे कुछ निर्देशिकाओं, जैसे /tmp, या पर सीमित कर सकता हूं ~/dev

जवाबों:


10

अपने .vimrc के अंत में इसे डालने का प्रयास करें (उपयुक्त रूप में संशोधित करें)

if @% == "" && getcwd() == "/tmp"
    :silent edit test.sh
endif

यह जांचता है कि क्या वर्तमान फ़ाइल नाम खाली है (वर्तमान फ़ाइल नाम का @%संदर्भ), और जांच करता है कि विम की वर्तमान निर्देशिका क्या है /tmp। आप अन्य निर्देशिकाओं को भी इस तरह जोड़ सकते हैं

(getcwd() == "/tmp" || getcwd() == "~/dev")

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

मैंने स्टार्टअप के दौरान निम्नलिखित संदेश को दबाने के लिए चुप किया:

"test.sh" [New File]
Press ENTER or type command to continue

5

जॉन के जवाब का एक संशोधन उपयोगी हो सकता है:

if @% == "" && getcwd() == "/tmp"
    :silent edit `=glob("test\.*", 1, 1)[0]`
endif

वह पहली फ़ाइल खोलता है जो इसके साथ शुरू होती है test.

केवल पहली फ़ाइल के बजाय, यदि आप अन्य मिलान फ़ाइलें भी खोलना चाहते हैं, तो करें:

if @% == "" && getcwd() == "/tmp"
    for i in glob("test\.*", 1, 1)
        :silent edit `=i`
    endfor
endif
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.