जवाबों:
यह शायद एक स्क्रैच बफर है, जिसे नाम दिया जा सकता है। मदद से:
खरोंच
इसमें वह टेक्स्ट होता है जिसे कभी भी छोड़ा जा सकता है। इसे खिड़की बंद करते समय रखा जाता है, इसे स्पष्ट रूप से हटा दिया जाना चाहिए। सेटिंग्स:>
:setlocal buftype=nofile :setlocal bufhidden=hide :setlocal noswapfile The buffer name can be used to identify the buffer, if you give it a meaningful name.
इसमें पाया जा सकता है :help special-buffers
।
:edit
फ़ाइल को संपादित करने के लिए फ़ाइल का उपयोग करते हैं, तो एक नया बफर स्वचालित रूप से बनाया जाता है। एक खाली बफर दर्ज करके बनाया जा सकता है :enew
या :new
या :vnew
। : विम बफर पूछे जाने वाले प्रश्न से vim.fandom.com/wiki/Vim_buffer_FAQ
:helpgrep scratch
10 (मेरी स्थापना में) परिणामों में से एक के रूप में बदल जाता है।
मुझे इस विषय पर एक विम टिप (जो vim.wikia पर माइग्रेट किया गया है) याद है।
स्क्रैच बफ़र्स बनाने के लिए मेरे द्वारा उपयोग किए जाने वाले फ़ंक्शन का नवीनतम संस्करण भी सेट करता है:
'buflisted'
असत्य को'readonly'
(मेरे VimL लाइब्रेरी प्लगइन से: lh-vim-lib)
function! lh#buffer#scratch(bname, where) abort
try
set modifiable
" The next function takes care of working around this damn E36
call lh#window#create_window_with(a:where.' sp '.escape(substitute(a:bname, '\*', '...', 'g'), '#%'))
catch /.*/
throw "Can't open a buffer named '".a:bname."'!"
endtry
setlocal bt=nofile bh=wipe nobl noswf ro
return bufnr('%')
endfunction
एक 'स्क्रैच' बफर मनमाने ढंग से अस्थायी सामग्री टाइप करने के लिए एक अनौपचारिक शब्द है।
स्वीकृत उत्तर और एक अन्य प्रश्न के बाद, मैंने अपने vimrc में निम्नलिखित फ़ंक्शन बनाया।
फ़ंक्शन वर्तमान विंडो में एक रिक्त बफर बनाता है और इसे 'खरोंच' नाम देता है। यदि आप छोड़ने की कोशिश करते हैं तो स्क्रैच बफर संरक्षित नहीं है। यदि आप विम को छोड़ देते हैं या इसे मिटा देते हैं (तो :bw
) बिना सहेजे हुए परिवर्तनों के साथ भी संकेत दिए बिना इसे छोड़ दिया जाएगा ।
इस फंक्शन को अपने vimrc में रखें। एक स्क्रैच बफर उपयोग बनाने के लिए :call Scratch()
।
function! Scratch()
split
noswapfile hide enew
setlocal buftype=nofile
setlocal bufhidden=hide
"setlocal nobuflisted
"lcd ~
file scratch
endfunction
आप लाइनों और फिर yanking द्वारा यह जल्दी से परीक्षण कर सकते हैं :@"
। फिर आप कोशिश कर सकते हैं :call Scratch()
।
जब आप स्क्रैच बफर बनाते हैं तो एक स्प्लिट का उपयोग किया जाता है ताकि आपका वर्तमान बफर प्रभावित न हो।
(यदि आप split
फ़ंक्शन से बाहर निकलना पसंद करते हैं तो आपका वर्तमान बफर "छिपा हुआ" होगा (अब विंडो में नहीं है) जब आप स्क्रैच बफर बनाते हैं। विम अभी भी बंद हो जाएगा और आपको संकेत देगा कि यदि आप इसमें सहेजे नहीं गए परिवर्तनों के साथ छोड़ने का प्रयास करते हैं। बफर)।
जब आप स्क्रैच फ़ंक्शन को कॉल करते हैं, तो स्क्रैच बफ़र सामान्य रूप से बफ़र की समान कार्यशील निर्देशिका होती है। मैंने स्क्रैच बफर वर्किंग डाइरेक्टरी को घर पर बदलने के लिए एक कमेंट आउट लाइन शामिल की है। यह उन अजीब स्थिति लाइनों वाले लोगों के लिए है जो वर्तमान निर्देशिका के पथ को बफर पथ के रूप में प्रदर्शित कर सकते हैं। या सिर्फ उन लोगों के लिए जो इसे पसंद करते हैं।
आप स्क्रैच बफर को "सूचीबद्ध" या "अनलिस्टेड" (डिफ़ॉल्ट रूप से सूचीबद्ध) होने के लिए सेट कर सकते हैं। यदि आप इसे असूचीबद्ध करते हैं तो आप इसे अपनी :buffers
सूची में नहीं देखेंगे , लेकिन यह इसमें होगा :buffers!
। nobuflisted
यदि आप इसे असूचीबद्ध करना पसंद करते हैं तो लाइन को रद्द करें । सूचीबद्ध या असूचीबद्ध, आप हमेशा अपने खरोंच बफर में :b scratch
किसी भी तरह बदल सकते हैं । स्क्रैच बफर को सूचीबद्ध करने से यह थोड़ा अधिक सुलभ हो जाता है। उदाहरण के लिए :sball
इसे एक विभाजन में शामिल किया जाएगा।
यदि आप :bw
स्क्रैच बफर पर बफर का उपयोग करते हैं तो विम सामग्री को हटा देगा और बिना चेतावनी के बफर हटा देगा। यदि आप :bd
स्क्रैच बफर पर बफर बफर का उपयोग करते हैं तो विम बिना किसी चेतावनी के सामग्री को छोड़ देगा और बफर को असूचीबद्ध कर देगा।
आप कई स्क्रैच बफ़र्स बना सकते हैं। विम को शिकायत होने लगती है लेकिन आप अभी भी अतिरिक्त के साथ समाप्त होते हैं।
buftype=hide
से पहले सेट करते हैं तो निर्देशिका बदलना आवश्यक नहीं है, क्योंकि बफर नाम "फ़ाइल नाम की तरह संभाला नहीं जाएगा।" इसके अलावा, ध्यान देने योग्य हो सकता है 'nobuflisted'
, जो बफर को आउटपुट में दिखाने से रोकता है :ls
। आपने इसे क्रमबद्ध किया, लेकिन इसका स्पष्ट उल्लेख नहीं किया।
buftype=hide
वास्तव में बकवास है, और हाँ, मैं वास्तव में buftype=nofile
:) के बारे में बात कर रहा था । लेकिन मैं आपके द्वारा बताए गए व्यवहार को पुन: पेश नहीं कर सकता, और फिर भी यह मानना कि कथन Vim buffer names are always filenames
गलत है। अगर मैं cd
आपके फ़ंक्शन से लाइन को हटाता हूं और फिर इसे चलाता हूं, तो मेरी स्थिति रेखा में कोई रास्ता नहीं है या echo bufname('%')
मुझे आश्चर्य है कि अगर यह बफर नाम के बजाय आपकी स्थिति के साथ एक समस्या है, तो मुझे आश्चर्य होता है। आपका 'statusline'
विकल्प किसके लिए निर्धारित है?
statusline
कुछ का उपयोग करने के लिए बदलूंगा expand(&buftype == 'nofile' ? '%' : '%:p:~:h')
, लेकिन मुझे लगता है कि अब हम व्यक्तिगत पसंद के दायरे में हैं। यदि आप परिवर्तन निर्देशिका समाधान के साथ रहने का निर्णय लेते हैं, तो :lcd
प्रश्न में विंडो में परिवर्तन को सीमित करने के लिए उपयोग करना बेहतर हो सकता है , लेकिन फिर से यह आपके ऊपर निर्भर है। किसी भी तरह, मुझे लगता है कि यह एक महान जवाब है। +1!
:h
कमांड ने इस सहायता का उपयोग किया?