मैं डिस्क से वर्तमान खुली फ़ाइल को विम से कैसे हटा सकता हूं? बफर को भी बंद करना अच्छा होगा।
मैं देखता हूं कि आप उसके लिए NERDTree का उपयोग कर सकते हैं , लेकिन मैं इस प्लगइन का उपयोग नहीं करता हूं।
मैं डिस्क से वर्तमान खुली फ़ाइल को विम से कैसे हटा सकता हूं? बफर को भी बंद करना अच्छा होगा।
मैं देखता हूं कि आप उसके लिए NERDTree का उपयोग कर सकते हैं , लेकिन मैं इस प्लगइन का उपयोग नहीं करता हूं।
जवाबों:
Rm (1) जैसे बाहरी उपकरण का उपयोग करना ठीक है, लेकिन delete()फ़ाइलों को हटाने के लिए विम का अपना कार्य भी है । यह पोर्टेबल होने का फायदा है।
:call delete(expand('%'))
इसे व्यक्त करने का एक वैकल्पिक तरीका है :call delete(@%), जो %(वर्तमान फ़ाइल) रजिस्टर (@accolade द्वारा टिप) का उपयोग करता है ।
वर्तमान बफ़र को पूरी तरह से शुद्ध करने के लिए, डिस्क और विम बफर पर दोनों फ़ाइल प्रतिनिधित्व, संलग्न करें :bdelete:
:call delete(expand('%')) | bdelete!
आप शायद अपनी प्राथमिकताओं के अनुसार इसे मैप करना चाहेंगे।
rकमांड को तोड़ना नहीं चाहते हैं ! अपने मानचित्रण के साथ बेहतर उपसर्ग करें <Leader>...।
nnoremap <C-Del> :call delete(expand('%'))<CR>लेकिन दुर्घटना होने पर मैं बफर को बंद नहीं करता; फिर भी आपके पास इसे बचाने का मौका है।
:call delete(@%)|q!It लघु संस्करण (यदि आप इसे मैप नहीं करना चाहते हैं)। (बफर में रहता है :lsऔर :bइस तरह से पुनर्जीवित किया जा सकता है ; यह फ़ाइल नाम और बफर विकल्प को बरकरार रखता है, लेकिन फ़ाइल सामग्री को नहीं।)
:call delete(@%)|bd!और उपयोग :ls!के साथ :bपुनर्जीवित करने के लिए।
Vim कमांड से डिलीट फाइल्स पर एक नजर । टिप्पणियाँ अनुभाग में आप जो खोज रहे हैं होना चाहिए:
असल में, आरएम वर्तमान फ़ाइल को हटा देगा; RM वर्तमान फ़ाइल को हटा देगा और बफर (बिना बचत) को एक बार में छोड़ देगा।
वैकल्पिक रूप से, आप वर्तमान फ़ाइल को निकालने के लिए शेल कमांड जारी कर सकते हैं:
:!rm %
!rm %, क्या कोई चेतावनी से बचने का एक तरीका है जब विम बफर पर वापस आ जाता है?
%उद्धरण के साथ फ़ाइल नाम ( ) को घेरना चाहेंगे !rm "%":।
%(filepath ( " फ़ाइल नाम " vim शब्दावली में) मूल रूप से लागू किया, संभावित रिश्तेदार, जैसे सिर्फ फ़ाइल के नाम के रूप में) के बजाय %:p(निरपेक्ष filepath) आप के बजाय एक और निर्देशिका में एक ही नाम के एक फ़ाइल को हटाने का जोखिम का एक छोटा सा चलाने के लिए, अगर आप भूल गए हैं तो आप :cdवहां एड करें। इसलिए मैं दृढ़ता से %:pइसके बजाय %अगर आप इसे वैसे भी मैप करने की सलाह देते हैं ।
कभी-कभी एक साधारण समस्या के लिए भी एक प्लगइन एक आकर्षक समाधान हो सकता है। इस मामले में हम भाग्यशाली हैं क्योंकि सर्वशक्तिमान टिम पोप द्वारा eunuch.vim है।
अपने शब्दों में eunuch.vim प्रदान करता है
UNIX शेल आदेशों के लिए विम चीनी जो इसकी सबसे अधिक आवश्यकता है। एक ही समय में एक बफर और अंतर्निहित फ़ाइल को हटाएं या नाम बदलें। क्विकफ़िक्स सूची में लोड करें
findयाlocateडालें। और इसी तरह।
उत्तम। यदि हमारे पास UNIX सिस्टम है, तो इसके लिए हमें कुछ अतिरिक्त टूल की आवश्यकता है।
जिस कमांड की आपको तलाश है
:Remove!
फिर से, इसे रिमैप करें यदि आपको इसकी बहुत आवश्यकता है, जैसे :nnoremap <Leader>rm :Remove!<CR>।
mv, mkdir, find, आदि अत्यधिक की सलाह देते हैं।
मुझे विम के भीतर से फ़ाइलों को हटाने में सक्षम होना पसंद है, लेकिन मैं गलती से महत्वपूर्ण काम को हटाने के बारे में भी पागल हूं, जो एक कारण या किसी अन्य के लिए, अभी तक संस्करण नियंत्रण में नहीं है। मुझे इस उत्तर के साथ @glts और @accolade से पिछली जानकारी को जोड़ना उपयोगी लगता है कि कैसे confirmvim छोड़ने से पहले कमांड का उपयोग करना है ।
इन्हें एक साथ रखते हुए, मैंने अपने साथ एक फंक्शन जोड़ा ~/.vimrc, जो फ़ाइल को हटाने और बफर को बंद करने से पहले संकेत देता है, और इसे एक कुंजी संयोजन के लिए मैप किया गया है:
nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()
fun! DeleteFileAndCloseBuffer()
let choice = confirm("Delete file and close buffer?", "&Do it!\n&Nonono", 1)
if choice == 1 | call delete(expand('%:p')) | q! | endif
endfun
यदि आप मेरी तुलना में एक कीस्ट्रोके कम पागल हैं, तो आप <CR>पहली पंक्ति में जुड़ सकते हैं
nnoremap <Leader>d. :call DeleteFileAndCloseBuffer()<CR>
और केवल एक बार रिटर्न प्रेस करना होगा।
expand('%:p')इसके बजाय दृढ़ता से उपयोग करने की सलाह देता हूं @%। (जब मैंने चापलूसी की कि आपने मेरे संकेत को शामिल किया है :) एक स्क्रिप्ट में संक्षिप्तता का लाभ मामूली है। इससे भी महत्वपूर्ण बात %:p:) फ़ाइलनाम को एक पूर्ण निरपेक्ष पथ पर विस्तारित करेगा (जो यह पहले से हो सकता है या नहीं भी हो सकता है)। बस के साथ %आप एक ही नाम की फ़ाइल को किसी अन्य निर्देशिका में हटाने का एक छोटा जोखिम चलाते हैं, अगर आप :cdवहां एड भूल गए हैं ।
आप इसे दो चरणों में कर सकते हैं:
एक नई फ़ाइल के रूप में सहेजें
: w newfilename
पुरानी फ़ाइल को हटाएं
! rm oldfilename
यह एक अलोकप्रिय राय हो सकती है लेकिन आपकी फ़ाइल ट्री एक्सप्लोरर (Netrw / NerdTree) एक फ़ाइल को हटाने का सबसे सरल और सुरक्षित तरीका होने जा रहा है। भले ही ओपी NerdTree का उपयोग नहीं कर रहा है, इन-बिल्ट प्लगइन Netrw बस के रूप में भी काम करेगा।
nnoremap rm :call delete(expand('%')) \| bdelete!<CR>:। आप अपने उत्तर में जोड़ना चाह सकते हैं।