একটি স্ক্র্যাচ উইন্ডো কি?


10

কখনও কখনও নাম সহ একটি জানালা খোলা দেখি 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আদেশটি এই সহায়তাটি অ্যাক্সেস করতে ব্যবহার করেছে?
উইজআপ

2
: h বাফার, তারপরে "বিশেষ ধরণের বাফার" এর মাধ্যমে পড়ুন। আপনি সঠিক পথে ছিলেন
wbogacz

আপনি যখন কোনও ভিএম কমান্ড ব্যবহার করে কোনও ফাইল খুলেন, তখন একটি বাফার স্বয়ংক্রিয়ভাবে তৈরি হয়। উদাহরণস্বরূপ, আপনি যদি :editফাইলটি সম্পাদনা করতে ফাইল ব্যবহার করেন তবে একটি নতুন বাফার স্বয়ংক্রিয়ভাবে তৈরি হবে। একটি খালি বাফার লিখে তৈরি করা যেতে পারে :enewবা :newবা :vnew। ভিম বাফার এফএকিউ থেকে: vim.fandom.com/wiki/Vim_buffer_FAQ
নীলজি

2
@ উইজআপ :helpgrep scratchএটিকে 10 এর মধ্যে একটি হিসাবে পরিণত করেছে (আমার ইনস্টলেশনতে) ফলাফল।
সমৃদ্ধ

2

আমার মনে আছে এই বিষয়ে একটি ভিম টিপ (যা vim.wikia তে স্থানান্তরিত হয়েছে)।

স্ক্র্যাচ বাফার তৈরি করতে আমি ব্যবহৃত ফাংশনের সর্বশেষতম সংস্করণটি সেট করে:

  • 'buflisted' মিথ্যা
  • 'readonly'

(আমার ভিআইএমএল লাইব্রেরি প্লাগইন থেকে: 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

একটি 'স্ক্র্যাচ' বাফার এক জায়গায় অনিয়মিত সাময়িক সামগ্রী টাইপ করার জন্য একটি অনানুষ্ঠানিক শব্দ।

স্বীকৃত উত্তর এবং অন্য একটি প্রশ্নের অনুসরণ করে আমি আমার ভিএমআরসি-তে নিম্নলিখিত ফাংশনটি তৈরি করেছি।

ফাংশনটি বর্তমান উইন্ডোতে একটি ফাঁকা বাফার তৈরি করে এবং এর নাম দেয় 'স্ক্র্যাচ'। আপনি যদি প্রস্থান করার চেষ্টা করেন তবে স্ক্র্যাচ বাফার সুরক্ষিত নয়। আপনি ভিম ছেড়ে দিলে বা এটি মুছে ফেললেও এটি সংরক্ষণ না করা পরিবর্তন সহ প্রম্পট না করেই তা বাতিল করা হবে :bw

এই ফাংশনটি আপনার ভিএমআরসি-তে রাখুন। একটি স্ক্র্যাচ বাফার ব্যবহার তৈরি করতে :call Scratch()

function! Scratch()
    split
    noswapfile hide enew
    setlocal buftype=nofile
    setlocal bufhidden=hide
    "setlocal nobuflisted
    "lcd ~
    file scratch
endfunction

আপনি লাইনগুলি ইয়াঙ্ক করে তাড়াতাড়ি পরীক্ষা করতে পারেন এবং তারপরেও :@"। তারপরে আপনি চেষ্টা করতে পারেন :call Scratch()

একটি বিভক্ত ব্যবহার করা হয় যাতে আপনি স্ক্র্যাচ বাফার তৈরি করার সময় আপনার বর্তমান বাফার প্রভাবিত হয় না।

(আপনি যদি splitফাংশনটি বাদ দিতে চান তবে আপনার স্ক্র্যাচ বাফারটি তৈরি করার সময় আপনার বর্তমান বাফারটি "লুকানো" (উইন্ডোতে আর থাকবে না) V বাফার)।

আপনি স্ক্র্যাচ ফাংশনটি কল করার সময় স্ক্র্যাচ বাফারটিতে সাধারণত আপনি যে বাফারে থাকতেন তার একই কাজ ডিরেক্টরি থাকে। স্ক্র্যাচ বাফার ওয়ার্কিং ডিরেক্টরিটি ঘরে পরিবর্তন করতে আমি একটি মন্তব্য আউট লাইনে অন্তর্ভুক্ত করেছি। এটি মজার স্ট্যাটাস লাইনের সাথে তাদের জন্য যা বর্তমান ডিরেক্টরিটির পথটি বাফার পথ হিসাবে প্রদর্শন করতে পারে। বা যারা কেবল এটি পছন্দ করেন তাদের জন্য।

আপনি স্ক্র্যাচ বাফারকে "তালিকাভুক্ত" বা "তালিকাভুক্ত" (ডিফল্ট অনুসারে তালিকাবদ্ধ) করতে সেট করতে পারেন। আপনি যদি এটি তালিকাভুক্ত না করে থাকেন :buffersতবে আপনি এটি আপনার তালিকায় দেখতে পাবেন না তবে এটি এতে থাকবে :buffers!nobuflistedআপনি যদি তালিকাভুক্ত থাকতে পছন্দ করেন তবে লাইনটি কমেন্ট করুন । তালিকাবদ্ধ বা তালিকাভুক্ত, আপনি যে :b scratchকোনও উপায়ে সর্বদা আপনার স্ক্র্যাচ বাফারে পরিবর্তন করতে পারেন । স্ক্র্যাচ বাফার তালিকাভুক্ত করা এটিকে আরও কিছুটা অ্যাক্সেসযোগ্য করে তোলে। উদাহরণস্বরূপ :sballএটি একটি বিভক্ত মধ্যে অন্তর্ভুক্ত করা হবে।

আপনি যদি :bwস্ক্র্যাচ বাফারে (বাফার ওয়াইপ) ব্যবহার করেন তবে ভিম সামগ্রীটি মুছে ফেলবে এবং কোনও সতর্কতা ছাড়াই বাফারটিকে সরিয়ে ফেলবে। আপনি যদি :bdস্ক্র্যাচ বাফারে (বাফার মুছুন) ব্যবহার করেন তবে ভিম সতর্কতা ছাড়াই সামগ্রীটি ফেলে দেবে এবং বাফারটিকে তালিকাভুক্ত করা হবে।

আপনি একাধিক স্ক্র্যাচ বাফার তৈরি করতে পারেন। ভিম অভিযোগ করতে শুরু করে তবে আপনার অতিরিক্ত অতিরিক্তগুলি রয়েছে।


2
মৃত্যুদন্ড কার্যকর করা প্রয়োজন। আপনার ফাংশনটি কেবল এনি ইত্যাদি চালাতে পারে
ডি বেন নোবল

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উইন্ডোটিতে পরিবর্তনগুলি সীমাবদ্ধ রাখার জন্য ব্যবহার করা ভাল but তবে আবার এটি আপনার ধরণের। যাইহোক, আমি মনে করি এটি একটি দুর্দান্ত উত্তর। +1 টি!
ধনী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.