क्या मैं विम के साथ एक निर्देशिका में फ़ाइलों का नाम बदल सकता हूं?


4

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

मैं फ़ाइलों का नाम बदलने के लिए इस इंटरफ़ेस का उपयोग करना चाहता हूं। साधारण vim नाम काम की तरह %s/term1/term2/, लेकिन जब मैं इसे यहाँ आज़माता हूँ, तो यह वापस आ जाता है: E21: Cannot make changes, 'modifiable' is off

क्या मुड़ने का कोई रास्ता है modifiable इस परिदृश्य में, या इसका सीधा मतलब यह है कि यह इस तरह से नहीं किया जा सकता है?

जवाबों:


7

हां, ऐसा नहीं किया जा सकता।

वह "फ़ाइल-ब्राउज़र-प्रकार इंटरफ़ेस" एक अंतर्निहित प्लगइन द्वारा प्रदान किया गया है जिसे netrw कहा जाता है। यह केवल पढ़ने के लिए हाँ है, आप इसे संशोधित नहीं कर सकते।

आप हिट करने वाले हैं R कर्सर या चिह्नित फ़ाइलों के तहत फ़ाइल का नाम बदलने के लिए।

देख :help netrw, :help netrw-browse-maps और विशेष रूप से :help netrw-R

यदि आप विम का उपयोग करके फ़ाइलों का नाम बदलना चाहते हैं, तो आपको कोशिश करनी चाहिए qmv वहाँ से renameutils पैकेज या vidir वहाँ से moreutils पैकेज (ऊपर सिर के लिए दिमित्री के लिए धन्यवाद)।


हाँ, यह समझ में आता है। मैं qmv को देखूंगा!
Questionmark

2
एन। बी। qmv है कुछ परेशानियाँ गैर-अस्सी के पात्रों के साथ, जबकि vidir से moreutils नहीं किया है
Dmitry Alexandrov

1

इसकी जाँच पड़ताल करो renamer.vim - फ़ाइलों के समूहों का नाम बदलने के लिए विम की शक्ति का उपयोग करें लगाना। पसंद netrw , यह निर्देशिका सामग्री को एक स्क्रैच बफ़र में प्रस्तुत करता है, और फिर आपको उस बफ़र को संपादित करने देता है, और अंत में एडिट को अंतर्निहित फ़ाइलों पर लागू करता है।


0

Netrw आपको v143 के बाद से फ़ाइलों का नाम बदलने के लिए एक पैटर्न लागू करने की अनुमति देगा। प्रक्रिया: मार्क फाइलें (पैटर्न के आधार पर फाइलों को चिह्नित करने के लिए mr का उपयोग करें), फिर R को हिट करें। पहले नाम बदलने वाले क्वेरी पर, स्ट्रिंग के साथ जवाब दें। s/-frompat-/-topat-/ जहां -frompat- तथा -topat- विम प्रतिस्थापन पैटर्न हैं। s/ इसके लिए आवश्यक है। उदाहरण:

s/\(.*\)\.c/\1.cpp/

0

मैं शेल का उपयोग करके इस कार्य को पूरा करने के लिए "सिस्टम ()" का उपयोग करने की कोशिश करता हूं (यदि ऐसा है, तो निश्चित रूप से) अपने ".vimrc" पर इस कार्य को पूरा करने के लिए एक फ़ंक्शन बना रहा है।

func! YourFunc() range

    let l:result = system("your shell command")

    [...]

endfunc

में "सिस्टम ()" का उपयोग देखें https://github.com/eduardolucioac/groovim/blob/master/.vimrc

[] के

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