ভিআইএম-এ উইন্ডোজের মধ্যে কীভাবে ফাইলগুলি অদলবদল করবেন?


123

আমি যখন ভিআইএম এর সাথে কাজ করি তখন আমার সর্বদা একাধিক উইন্ডো দৃশ্যমান থাকে। কখনও কখনও আমি একটি সহজ উপায় চাই, জায়গায় windows উইন্ডোজ অদলবদল করতে। এটি আরও সহজ করার জন্য কোনও প্লাগিন, ম্যাক্রো ইত্যাদি রয়েছে? বিটিডাব্লু, আমি মিনিবুফএক্সপ্লোরার ব্যবহার করি।


2
"স্থানে সেই উইন্ডোগুলিকে অদলবদল করে", আপনি কি "উইন্ডো বিতে উইন্ডো এ-তে থাকা বাফারটি খুলছেন, এবং এর বিপরীতে, উইন্ডোজের অবস্থান পরিবর্তন না করে"?
hcs42

1
হ্যাঁ, এটাই আমি চাই।
এমড্রোডজিয়েল

উত্তর:


304

কয়েকটি কার্যকর কমান্ড রয়েছে যা আপনাকে নির্দিষ্ট পরিমাণ নিয়ন্ত্রণ দেয় তবে এটি ব্যাপক নয়। প্রধানগুলি হ'ল:

  • Ctrl- W, r(যেমন ধরুন CTRL, টিপুন W, ছেড়ে দিন CTRL, টিপুন r) - যা উইন্ডো ঘোরায় (প্রথম উইন্ডোটি দ্বিতীয়টি হয়ে যায়, দ্বিতীয়টি তৃতীয়টি হয়ে যায় ইত্যাদি)

  • Ctrl- W, x- পরের উইন্ডোটি দিয়ে বর্তমান উইন্ডোটি স্যুপ করুন

  • Ctrl- W, Shift- H- এই উইন্ডোটি খুব বাম দিকে সরান move

  • Ctrl- W, Shift- K- এই উইন্ডোটিকে শীর্ষে সরান

(এবং একইভাবে Ctrl- W, Shift- Jএবং Ctrl- W, Shift- এর জন্য L)। দেখা:

:help window-moving

আরও তথ্যের জন্য.


16
এটি "সেরা উত্তর" হওয়া উচিত - স্থানীয় কার্যকারিতা, কাস্টম ভিমস্ক্রিপ্ট নয়।
ডেভিড রিভার্স

1
সম্পূর্ণ না, না। প্রচুর ব্যবহারের কেস রয়েছে যা উইন্ডোটি ধ্বংস ও পুনরুদ্ধার না করে বিল্ট ইন উইন্ডো ম্যানেজমেন্ট ব্যবহার করে করা যায় না। সোয়াপ বাফার স্ক্রিপ্ট এই ব্যবহারের ক্ষেত্রে অনুমতি দেয়।
ববপল

মনে রাখবেন যে সিটিএল-ডাব্লুও কাজ করে। ctl-W কিছু টার্মিনাল এমুলেটরগুলিতে উইন্ডোজ বন্ধ করবে close
ডেটাকিড

7

আমার ভিম উইন্ডোজ অনুলিপি-পেস্ট করার জন্য আমি আমার ভিএমআরসি-তে নিম্নলিখিত কোড স্নিপেটটি লিখেছি এবং ব্যবহার করছি been

এটি নিম্নলিখিত শর্টকাটগুলির উদাহরণ হিসাবে সংজ্ঞা দেয়:

  • <c-w>y: "উইন্ডোটি ইয়াঙ্কস", অর্থাৎ বর্তমান উইন্ডোতে বাফারের সংখ্যাটি একটি বৈশ্বিক চলকগুলিতে সঞ্চয় করে।
  • <c-w>pp: "উইন্ডোটি বর্তমান উইন্ডোটির স্থানে রাখে", এটি পূর্বে সঞ্চিত বাফার নম্বরটি পড়ে এবং বর্তমান উইন্ডোতে সেই বাফারটি খোলে। এটি বর্তমান উইন্ডোতে ব্যবহৃত বাফারের সংখ্যাও সংরক্ষণ করে।

যদি "সেই স্থানে উইন্ডোগুলিকে অদলবদল করে", আপনি "উইন্ডো বিতে উইন্ডো এ বাফারটি খুলছেন এবং এর বিপরীতে উইন্ডোগুলির অবস্থান পরিবর্তন না করে", আপনি উইন্ডোগুলিকে অদলবদল করতে নিম্নলিখিত কীবোর্ড অনুক্রমটি ব্যবহার করতে পারেন:

  1. উইন্ডো এ নির্বাচন করুন (হয় মাউস দিয়ে বা কীবোর্ড কমান্ড সহ)
  2. টিপুন <c-w>y(বাফার নম্বরটি ইয়াঙ্কিং)
  3. উইন্ডো বি নির্বাচন করুন
  4. টিপুন <c-w>pp(বাফার আটকানো)
  5. উইন্ডো এ নির্বাচন করুন
  6. টিপুন <c-w>pp(আবার বাফার আটকানো)

এটি কেবল ভিম> = 7.0 এ কাজ করে।

if version >= 700
function! HOpen(dir,what_to_open)

    let [type,name] = a:what_to_open

    if a:dir=='left' || a:dir=='right'
        vsplit
    elseif a:dir=='up' || a:dir=='down'
        split
    end

    if a:dir=='down' || a:dir=='right'
        exec "normal! \<c-w>\<c-w>"
    end

    if type=='buffer'
        exec 'buffer '.name
    else
        exec 'edit '.name
    end
endfunction

function! HYankWindow()
    let g:window = winnr()
    let g:buffer = bufnr('%')
    let g:bufhidden = &bufhidden
endfunction

function! HDeleteWindow()
    call HYankWindow()
    set bufhidden=hide
    close
endfunction

function! HPasteWindow(direction)
    let old_buffer = bufnr('%')
    call HOpen(a:direction,['buffer',g:buffer])
    let g:buffer = old_buffer
    let &bufhidden = g:bufhidden
endfunction

noremap <c-w>d :call HDeleteWindow()<cr>
noremap <c-w>y :call HYankWindow()<cr>
noremap <c-w>p<up> :call HPasteWindow('up')<cr>
noremap <c-w>p<down> :call HPasteWindow('down')<cr>
noremap <c-w>p<left> :call HPasteWindow('left')<cr>
noremap <c-w>p<right> :call HPasteWindow('right')<cr>
noremap <c-w>pk :call HPasteWindow('up')<cr>
noremap <c-w>pj :call HPasteWindow('down')<cr>
noremap <c-w>ph :call HPasteWindow('left')<cr>
noremap <c-w>pl :call HPasteWindow('right')<cr>
noremap <c-w>pp :call HPasteWindow('here')<cr>
noremap <c-w>P :call HPasteWindow('here')<cr>

endif

4

আমি একই সময়ে একই ধরণের প্রশ্ন জিজ্ঞাসা করেছি : আমি নির্বিচারে জটিল বিন্যাস পরিবর্তন না করে বিশেষ করে উইন্ডোজ অদলবদল করার একটি উপায় চেয়েছিলাম। প্রস্তাবিত যে কোনও সমাধান থেকে আমি একটি ভিআইএম প্লাগইন তৈরি শেষ করেছি। একে উইন্ডোসাপ.ভিম বলা হয় ; আপনার পছন্দসই ভিআইএম প্লাগইন ম্যানেজারের সাথে এটি ইনস্টল করুন এবং এটিকে ঘূর্ণি দিন।

উইন্ডোসাপ.ভিমের সাহায্যে আপনি সহজভাবে চাইবেন

  1. <Leader>yw একটি উইন্ডো ইঁদুর করতে।
  2. আপনার কার্সারটিকে অন্য উইন্ডোতে সরান।
  3. <Leader>pw সেই উইন্ডোটি পেস্ট করতে, এটি প্রথমটির অবস্থানের সাথে অদলবদল করতে।

কী সংমিশ্রণগুলি অবশ্যই আপনার পছন্দগুলিতে কনফিগারযোগ্য।


1

হিসাবে <c-w>rবা <c-w>xএর কোনও বিধিনিষেধ রয়েছে যে আপনি উইন্ডো ঘোরানো বা বিনিময় করতে পারবেন না যখন উল্লম্ব এবং অনুভূমিক উইন্ডো বিভক্ত হয় মিশ্রিত। এবং <c-w>Hআপনার প্রত্যাশা ছাড়িয়ে উইন্ডো বিন্যাসটি পরিবর্তন করতে পারে বিশেষত যখন আপনার অনেকগুলি উইন্ডো থাকে।

সুতরাং আপনি উইন্ডো / বাফার স্যুইচিংয়ের আপনার বিশেষ প্রয়োজনগুলি পূরণ করতে কিছু কাজ করতে পারেন। উপরের বাম উইন্ডোটির সাথে বর্তমান উইন্ডোটি স্যুইচ করার উদাহরণ এখানে রয়েছে (সাধারণত আমি এটি উল্লম্বভাবে সর্বাধিকতর করে তুলি):

function! SwitchMainWindow()
  let l:current_buf = winbufnr(0)
  exe "buffer" . winbufnr(1)
  1wincmd w
  exe "buffer" . l:current_buf
endfunction
nnoremap <c-w><c-e> :call SwitchMainWindow()<cr>

1

আমার মতে, http://vimcast.org/episodes/working-with-windows/ এর এই প্রশ্নের সঠিক উত্তর রয়েছে। সংক্ষেপে:

  • ctrl-w w খোলা উইন্ডোজ মধ্যে চক্র
  • ctrl-w h বাম দিকে উইন্ডো ফোকাস করুন
  • ctrl-w j নীচে উইন্ডো ফোকাস
  • ctrl-w k উইন্ডোটিকে উপরে ফোকাস করুন
  • ctrl-w l ডানদিকে উইন্ডো ফোকাস
  • ctrl-w r সমস্ত উইন্ডো ঘোরান
  • ctrl-w x তার প্রতিবেশীর সাথে বর্তমান উইন্ডো বিনিময় করুন
  • ctrl-w H বর্তমান উইন্ডোটি অনেকদিকের বাম দিকে সরান
  • ctrl-w J বর্তমান উইন্ডোটি নীচে সরান
  • ctrl-w K বর্তমান উইন্ডোটিকে শীর্ষে সরান
  • ctrl-w L বর্তমান উইন্ডোটি ডানদিকে সরান

3
কোনও উত্তর যুক্ত হওয়ার কারণ কী যা পোস্টে কোনও নতুন ব্যবহারযোগ্য তথ্য আনে না? 6 বছর আগে এটির পুরোপুরি উত্তর দেওয়া হয়েছিল। আপনি কি ভিমকাস্টের জন্য বিজ্ঞাপন প্রচার করছেন?
এমড্রোডজিয়েল

@ এমড্রোজডিজিয়েল আমি ওপি'র 9 বছর পরে এই উত্তরটির প্রশংসা করি। আমি যে তথ্য চেয়েছিলাম তার সাথে সর্বাধিক সংক্ষিপ্ত উত্তর।
রোরো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.