আমি কি ভিমকে "1 টি মুছে ফেলা" রেজিস্টার "1" তে সংরক্ষণ করতে পারি?


14

আমি সম্প্রতি আমার সেটআপ থেকে ইয়াঙ্করিং প্লাগইনটি আংশিকভাবে সরিয়েছি কারণ এটি ম্যাক্রোগুলির সাথে কিছু সমস্যা সৃষ্টি করেছিল, তবে বেশিরভাগ কারণেই আমি সিদ্ধান্ত নিয়েছিলাম যে এর পরিবর্তে নিজেকে ভিমের রেজিস্টারগুলি ব্যবহার করার প্রশিক্ষণ দেওয়া ভাল particular বিশেষত, মুছে ফেলা টেক্সটটি যেভাবে প্রথমে নিবন্ধে সংরক্ষণ করা হয় "1এবং তারপর মাধ্যমে আপ স্থানান্তরিত "2, "3ইত্যাদি আরও মুছে তৈরি করা হয় খুবই দরকারী।

যাইহোক, যখন মুছে ফেলা / পরিবর্তন পাঠ্যের এক লাইনেরও কম সরিয়ে দেয়, পরিবর্তে এটি "-ছোট মুছুন রেজিস্টারে (নির্দিষ্ট আন্দোলনের কমান্ডের জন্য কিছু ব্যতিক্রম সহ) সঞ্চিত থাকে । যদি পরবর্তী ছোট মুছে ফেলা হয় তবে সেই বিট টেক্সটটি হারিয়ে যায়।

রেজিস্টারে সমস্ত মুছে ফেলার জন্য ভিমকে পাওয়া সম্ভব "1?

nnoremap d "1d প্রায় কাজ করে, তবে আপনি উভয় নিবন্ধে "1 এবং পাঠ্যটি শেষ করেন "2

ছোট মুছুন নিবন্ধকের কার্যকারিতা প্রভাবিত হয়েছে কিনা তা আমার আপত্তি নেই। নামকরণের নিবন্ধে ছোট মুছতে মুছতে বাঁচানোর জন্য আমি আমার আচরণটি পরিবর্তন করার পরামর্শ দেওয়া অবশ্যই সহায়ক সহায়ক হতে পারে না - এটি আমি বর্তমানে করছি।

উত্তর:


10

আপনি পুরানো ভিমে 7.3 সংস্করণে এটি ব্যবহার করতেন যখন আপনি :set clipboard=unnamed( এই রেডডিট আলোচনাটি দেখুন , বাগের ফলস্বরূপ, যা আমি এখানে জানিয়েছি

এই থ্রেডটিতে আর্য্য লেইব তৌরোগের একটি প্যাচ রয়েছে যা একটি 'regone'বিকল্প উপস্থাপন করে। এটি এটিকে (অত্যধিক দীর্ঘ) টুডু তালিকায় পরিণত করেছে, তবে শীঘ্রই এটি সংযুক্ত হওয়ার সম্ভাবনা নেই। সুতরাং, আপনার কাছে কেবল কেবল পুরানো ভিমে ডাউনগ্রেড করার বিকল্প রয়েছে, বা সেই প্যাচটি দিয়ে নিজেকে ভিম গড়ে তুলুন (এবং ভিম_দেব মেইলিং তালিকায় গ্রহণের জন্য চাপ দিন )।


1
মজাদার! (বিশেষ করে প্রান্তিকতা সম্পর্কে আপনার ধারণা।) তথ্যের জন্য ধন্যবাদ। অন্তর্বর্তীকালীন সময়ে এটি করার জন্য কাউকে কিছু ক্রেজি ভিমস্ক্রিপ্ট নিয়ে আসতে উত্সাহিত করার প্রয়াসে আপাতত গ্রহণ করা / গ্রহণ করা যাবে।
সমৃদ্ধ

5

আমি একটি প্রমাণ-ধারণা ধারণা পেয়েছি dযা গতি এবং ভিজ্যুয়াল মোডে কমান্ডের জন্য কাজ করে। এটি এখনও সম্পূর্ণ দৃust় সমাধান নয় (উদাহরণস্বরূপ, d[count]dকাজ করে না , এবং নাও করে [count]D) তবে এটি প্রায় আমার বাস্তব ব্যবহারের সমস্ত বিষয় জুড়ে।

এটি গ্রাহক অপারেটর ফাংশন সেট করে কাজ করে যা:

  1. নিবন্ধের বিষয়বস্তু 1-8 অভিধানে সঞ্চয় করে,
  2. মুছে ফেলুন নিবন্ধ 1 এ,
  3. রেজিস্টারগুলি 1-8 এর পূর্ববর্তী সংরক্ষিত সামগ্রীতে 2-9 নিবন্ধভুক্ত করে।

:help map-operatorঅপারেটর কীভাবে কাজ করে তার একটি ব্যাখ্যা দেখুন ।

function! ShiftingDeleteOperator(type)
  let reg_dict = {}
  for k in range(1, 8)
    execute printf("let reg_dict[%d]=getreg('%d', 1)", k, k)
  endfor

  if a:type ==# 'v'
    execute 'normal! `<v`>d'
  elseif a:type ==# 'V'
    execute 'normal! `<V`>d'
  elseif a:type ==# "\<C-V>"
    execute "normal! `<\<C-V>`>d"
  elseif a:type ==# 'char'
    execute 'normal! `[v`]d'
  elseif a:type ==# 'line'
    execute "normal! '[V']d"
  else
    return
  endif

  let deleted = getreg('"', 1)
  call setreg(1, deleted)

  for [k, v] in items(reg_dict)
    execute printf("call setreg(%d, v)", k + 1)
  endfor
endfunction

" Call the function for d{motion} via operatorfunc
nnoremap <silent> d :set operatorfunc=ShiftingDeleteOperator<CR>g@
" Call the function when d or x are hit in visual mode
vnoremap d :<C-U>call ShiftingDeleteOperator(visualmode())<CR>
vnoremap x :<C-U>call ShiftingDeleteOperator(visualmode())<CR>
" Use the d{motion} as defined above to add limited support for `D` command
nmap D d$
" Use the standard dd command
nnoremap dd dd 

একটি পুরানো উত্তর মন্তব্য করার জন্য দুঃখিত। আমি এই সমাধানটি গ্রহণ করেছি yএবং cতবে cআমার এনভিআইএম ক্রিয়াটির পরে সন্নিবেশ মোডে প্রবেশ করে না ... বর্তমানে আমাকে করতে হবে execute lএবং startinsertযা কোনও সঠিক স্থির নয় (যেমনটি c$কার্সারটিকে ভুল অবস্থানে রাখবে)। কোন ধারনা?
সানি পুন

2

নীওভিম সম্পাদকটিতে পুল টানুন অনুরোধটি দেখুন :

[আরএফসি] ছোট মুছে ফেলার জন্য নম্বরযুক্ত রেজিস্টারগুলি ব্যবহার করার জন্য একটি বিকল্প যুক্ত করুন # 8169

আমি smalldelবিকল্পটি যুক্ত করার চেষ্টা করেছি , যা আপনাকে মুছে যাওয়া অক্ষরের ন্যূনতম সংখ্যাটি সংখ্যাযুক্ত রেজিস্টারে "1 .." ধাক্কা দেওয়ার জন্য কনফিগার করতে দেয়

এই পিআর একীভূত হওয়ার পরে পরবর্তী নব্যম রিলিজ (যদি এটি ঘটে) এই বিকল্পটি ধারণ করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.