छोटे, सुरक्षित, प्लगइन के बिना:
:sav new_name
:!rm <C-R># // or !del <C-R># for windows
control+ R, दबाने से पहले #तुरंत एक वैकल्पिक-फ़ाइल (वर्तमान विंडो में पहले से संपादित पथ) तक विस्तारित होगा Enter। यह हमें समीक्षा करने की अनुमति देता है कि हम वास्तव में क्या हटाने जा रहे हैं। |
ऐसे मामले में पाइप का उपयोग करना सुरक्षित नहीं है , क्योंकि यदि sav
किसी कारण से विफल हो जाता है, तब भी #
दूसरी जगह (या कुछ भी नहीं) को इंगित करेगा। इसका मतलब है !rm #
या delete(expand(#))
पूरी तरह से अलग फ़ाइल को हटा सकते हैं! तो इसे हाथ से सावधानी से करें या अच्छी स्क्रिप्ट का उपयोग करें (वे यहाँ कई उत्तरों में उल्लिखित हैं)।
शिक्षात्मक
... या एक फ़ंक्शन / कमांड / स्क्रिप्ट बनाने का प्रयास करें। Sth सरल से शुरू करें जैसे:
command! -nargs=1 Rename saveas <args> | call delete(expand('#')) | bd #
vimrc रीलोड के बाद, बस टाइप करें :Rename new_filename
। इस कमांड में क्या समस्या है?
सुरक्षा परीक्षण 1::Rename
तर्क के बिना क्या करता है?
हाँ, यह '#' में छिपी फ़ाइल को हटा देता है!
समाधान: आप उदाहरण के लिए उपयोग कर सकते हैं। ऐसी स्थिति या try
कथन:
command! -nargs=1 Rename try | saveas <args> | call delete(expand('#')) | bd # | endtry
सुरक्षा परीक्षण 1:
:Rename
(बिना तर्क के) त्रुटि फेंक देगा:
E471: तर्क की आवश्यकता है
सुरक्षा परीक्षण 2:
क्या होगा यदि नाम पिछले एक जैसा ही होगा?
सुरक्षा परीक्षण 3:
यदि फ़ाइल आपके वास्तविक से अलग स्थान पर होगी तो क्या होगा?
इसे स्वयं ठीक करें। पठनीयता के लिए आप इसे इस तरीके से लिख सकते हैं:
function! s:localscript_name(name):
try
execute 'saveas ' . a:name
...
endtry
endfunction
command! -nargs=1 Rename call s:localscript_name(<f-args>)
टिप्पणियाँ
!rm #
से बेहतर है !rm old_name
-> आपको पुराना नाम याद रखने की आवश्यकता नहीं है
!rm <C-R>#
!rm #
यह हाथ से करने पर बेहतर है -> आप देखेंगे कि आप वास्तव में क्या हटाते हैं (सुरक्षा कारण)
!rm
आम तौर पर बहुत सुरक्षित नहीं है ... mv
एक कचरा स्थान के लिए बेहतर है
call delete(expand('#'))
शेल कमांड (OS अज्ञेयवादी) से बेहतर है लेकिन टाइप करने के लिए लंबा और असंभव है control+ का उपयोग करनाR
try | code1 | code2 | tryend
-> जब कोड 1 के दौरान त्रुटि होती है, तो कोड 2 न चलाएं
:sav
(या :saveas
) के बराबर है :f new_name | w
- फ़ाइल_ देखें - और पूर्ववत इतिहास को संरक्षित करता है
expand('%:p')
आपके स्थान का पूरा रास्ता देता है ( %
) या वैकल्पिक फ़ाइल का स्थान ( #
)