मैं जिस फ़ाइल का संपादन कर रहा हूं उसका नाम कैसे बदल सकता हूं?


38

क्या वह फ़ाइल का नाम बदलना संभव है जिसे मैं विम के भीतर से संपादित कर रहा हूं? वर्तमान में मैं क्या कर रहा हूँ Vim से बाहर निकलें, फ़ाइल का नाम बदलें और Vim से फिर से खोलें।



मुझे यह करने में दिलचस्पी है
मिगुएल डे वल-बोरो

जवाबों:


34

आप एक अलग नाम का उपयोग करके फ़ाइल को सहेज सकते हैं :w। लेकिन यह ऑपरेशन पुरानी फ़ाइल को नहीं हटाएगा और 'पुरानी' फ़ाइल आपके बफर में रहती है, इसलिए आपकी 'पुरानी' फ़ाइल में कोई भी परिवर्तन लागू किया जाएगा।

:saveasआपकी नई फ़ाइल को सहेजता है और इसे एक नए बफर में खोलता है। लेकिन यह पुरानी फाइल को डिलीट नहीं करता है।

मैं फ़ाइलों में tpope / vim-eneuch का उपयोग करता हूं:Move

: ले जाएँ: एक बफर और डिस्क पर फ़ाइल एक साथ नाम बदलें।


में से एक नकारात्मक पक्ष यह है :wया :saveasयह है कि आप एक स्क्रिप्ट संपादित कर रहे थे, तो अमल अनुमति खो देगा। netrwनाम बदलने की अनुमति रहेगी।
वारबकी

10

आप Netrw पर जा सकते हैं और फ़ाइल का नाम बदल सकते हैं।

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

:edit .

फ़ाइल पर नेविगेट करें R, नाम बदलें , दबाएँ और नाम बदलें। Enterफ़ाइल को संपादित करने के लिए दबाएँ ।

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

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

:cd %:p:h

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

:lcd %:p:h

2
सीधे टाइपिंग :edit %:p:hभी काम लगती है।
म्लादेन जबलानोविक

:Enetrw भी खोलेंगे
wisbucky

6

मैं वर्षों से इसके लिए Rename2 प्लगइन का उपयोग कर रहा हूं । यह वर्तमान बफ़र और डिस्क पर फ़ाइल दोनों का नाम बदल देता है:

:Rename {newname}

संपादित करें: मुझे यह github.vimrc पर एक फ़ाइल मिली :

function! RenameFile()
    let old_name = expand('%')
    let new_name = input('New file name: ', expand('%'), 'file')
    if new_name != '' && new_name != old_name
        exec ':saveas ' . new_name
        exec ':silent !rm ' . old_name
        redraw!
    endif
endfunction
map <leader>n :call RenameFile()<cr>

3

सबसे अच्छा तरीका है :Move, OrangTux ने कहा। पूर्णता के लिए, आप !कमांड मोड में एक धमाके ( ) का उपयोग करके vi संपादकों में टर्मिनल कमांड भी कर सकते हैं ।

:!mv {current_file} {new_name}
:e {new_name}

हालाँकि, यह विधि आपकी बफ़र सूची से पुराने बफ़र को नहीं निकालती है।

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