स्क्रैच विंडो क्या है?


11

कभी-कभी मुझे नाम के साथ एक खिड़की खुली दिखाई देती है scratch

मुझे पता है कि यह किसी प्रकार की अस्थायी बफर / खिड़की है।

मैं कैसे एक टोकरा कर सकते हैं?

:h scratch कुछ नहीं देता।

जवाबों:


11

यह शायद एक स्क्रैच बफर है, जिसे नाम दिया जा सकता है। मदद से:

खरोंच

इसमें वह टेक्स्ट होता है जिसे कभी भी छोड़ा जा सकता है। इसे खिड़की बंद करते समय रखा जाता है, इसे स्पष्ट रूप से हटा दिया जाना चाहिए। सेटिंग्स:>

      :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


1
किस :hकमांड ने इस सहायता का उपयोग किया?
wizzup

2
: एच बफर, फिर "विशेष प्रकार के बफ़र्स" के माध्यम से नीचे पढ़ें। आप सही रास्ते पर थे।
wbogacz

जब आप किसी भी Vim कमांड का उपयोग करके कोई फ़ाइल खोलते हैं, तो एक बफ़र स्वचालित रूप से बनाया जाता है। उदाहरण के लिए, यदि आप :editफ़ाइल को संपादित करने के लिए फ़ाइल का उपयोग करते हैं, तो एक नया बफर स्वचालित रूप से बनाया जाता है। एक खाली बफर दर्ज करके बनाया जा सकता है :enewया :newया :vnew। : विम बफर पूछे जाने वाले प्रश्न से vim.fandom.com/wiki/Vim_buffer_FAQ
NeilG

2
@wizzup :helpgrep scratch10 (मेरी स्थापना में) परिणामों में से एक के रूप में बदल जाता है।
रिच

2

मुझे इस विषय पर एक विम टिप (जो 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

2

एक 'स्क्रैच' बफर मनमाने ढंग से अस्थायी सामग्री टाइप करने के लिए एक अनौपचारिक शब्द है।

स्वीकृत उत्तर और एक अन्य प्रश्न के बाद, मैंने अपने 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स्क्रैच बफर पर बफर बफर का उपयोग करते हैं तो विम बिना किसी चेतावनी के सामग्री को छोड़ देगा और बफर को असूचीबद्ध कर देगा।

आप कई स्क्रैच बफ़र्स बना सकते हैं। विम को शिकायत होने लगती है लेकिन आप अभी भी अतिरिक्त के साथ समाप्त होते हैं।


2
अमल करने के लिए आवश्यक है। आपका फ़ंक्शन बस enew आदि चला सकता है
डी। बेन नोबल

1
यदि आप नाम सेट करने buftype=hide से पहले सेट करते हैं तो निर्देशिका बदलना आवश्यक नहीं है, क्योंकि बफर नाम "फ़ाइल नाम की तरह संभाला नहीं जाएगा।" इसके अलावा, ध्यान देने योग्य हो सकता है 'nobuflisted', जो बफर को आउटपुट में दिखाने से रोकता है :ls। आपने इसे क्रमबद्ध किया, लेकिन इसका स्पष्ट उल्लेख नहीं किया।
रिच

आपकी टिप्पणी के लिए धन्यवाद, @ D.BenKnoble। मैंने आपकी सलाह पर समारोह में सफाई की है।
नील

1
buftype=hideवास्तव में बकवास है, और हाँ, मैं वास्तव में buftype=nofile:) के बारे में बात कर रहा था । लेकिन मैं आपके द्वारा बताए गए व्यवहार को पुन: पेश नहीं कर सकता, और फिर भी यह मानना ​​कि कथन Vim buffer names are always filenamesगलत है। अगर मैं cdआपके फ़ंक्शन से लाइन को हटाता हूं और फिर इसे चलाता हूं, तो मेरी स्थिति रेखा में कोई रास्ता नहीं है या echo bufname('%')मुझे आश्चर्य है कि अगर यह बफर नाम के बजाय आपकी स्थिति के साथ एक समस्या है, तो मुझे आश्चर्य होता है। आपका 'statusline'विकल्प किसके लिए निर्धारित है?
रिच

1
अहा! खुशी है कि हम समझ गए! यदि यह मैं था, तो मैं अभी भी स्क्रैच फ़ंक्शन में डायरेक्टरी को नहीं बदलना पसंद करूंगा, इसलिए इसके बजाय मैं statuslineकुछ का उपयोग करने के लिए बदलूंगा expand(&buftype == 'nofile' ? '%' : '%:p:~:h'), लेकिन मुझे लगता है कि अब हम व्यक्तिगत पसंद के दायरे में हैं। यदि आप परिवर्तन निर्देशिका समाधान के साथ रहने का निर्णय लेते हैं, तो :lcdप्रश्न में विंडो में परिवर्तन को सीमित करने के लिए उपयोग करना बेहतर हो सकता है , लेकिन फिर से यह आपके ऊपर निर्भर है। किसी भी तरह, मुझे लगता है कि यह एक महान जवाब है। +1!
रिच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.