ভিম মধ্যে উল্লম্ব বিভাজন থেকে অনুভূমিক বিভাজনে দ্রুত স্যুইচ করতে


594

আপনি কীভাবে আপনার বর্তমান উইন্ডোজগুলি অনুভূমিক বিভাজক থেকে উল্লম্ব বিভাজনে এবং এর বিপরীতে ভিমে স্যুইচ করতে পারেন?

আমি দুর্ঘটনাক্রমে এক মুহুর্ত আগে এটি করেছি কিন্তু আমি আবার কীটি খুঁজে পাচ্ছি না।


2
সম্ভবত dwm.vim প্লাগইন কিছুটা উপকারী হবে
4 МАЛИКОВ

উত্তর:


893

ভিম মেলিংয়ের তালিকা বলছে (আরও ভাল পঠনযোগ্যতার জন্য পুনরায় ফর্ম্যাট করা):

দুটি পরিবর্তন করতে উল্লম্বভাবে বিভক্ত উইন্ডোগুলিকে অনুভূমিকভাবে বিভক্ত

Ctrl- w t Ctrl-w K

অনুভূমিকভাবে উল্লম্বভাবে:

Ctrl- w t Ctrl-w H

ব্যাখ্যা:

Ctrl- w t প্রথম (শীর্ষস্থানীয়) উইন্ডোটিকে বর্তমান করে তোলে

Ctrl- w K বর্তমান উইন্ডোটিকে একেবারে শীর্ষে পুরো-প্রস্থে নিয়ে যায়

Ctrl- w H বর্তমান উইন্ডোটি খুব বাম দিকে পুরো উচ্চতায় নিয়ে যায়

লক্ষ করুন যে টি ছোট হাতের অক্ষর, এবং কে এবং এইচ বড় হাতের।

এছাড়াও, কেবল দুটি উইন্ডো দিয়ে, আপনি মনে করতে পারেন Ctrl- আপনি w tঅংশটি ফেলে দিতে পারেন কারণ আপনি যদি ইতিমধ্যে কেবল দুটি উইন্ডোর একটিতে থাকেন তবে এটি বর্তমান করার বিন্দুটি কী?


27
সুতরাং আপনার যদি দুটি উইন্ডো অনুভূমিকভাবে বিভক্ত হয় এবং আপনি নীচের উইন্ডোতে থাকেন তবে আপনি কেবল ^ ডাব্লুএল ব্যবহার করুন।
খুব বেশি পিএইচপি

7
.... শক্তি ... আমার ভিম-ফু আজ দ্বিগুণ হয়েছে, আপনাকে ধন্যবাদ। আকর্ষণীয় ^ w কমান্ডগুলির একটি টন রয়েছে (বি, ডাব্লু, ইত্যাদি)
অ্যালেক্স হার্ট

NERDTree প্লাগইন ব্যবহার করার সময় এই কাজ করা খুব সুন্দর হবে :-)
এনো

3
@ আমার পক্ষে ভাল কাজ করে। কেবল 'স্প্রিটগুলি' ঘোরার আগে আপনার NERDTree প্যানেলটি টগল করুন, তারপরে টগল করুন এটি আবার খোলা। : NERDTreeToggle (সুবিধার জন্য আমি এটি কোনও ফাংশন কীতে ম্যাপ করেছি)।
ল্যাম্বার্ট

2
আমি আমার ভিএম কনফিগারেশনে কিছু লিডার ম্যাপিং যুক্ত করেছি: :nmap <leader>th <C-w>t<C-w>Hএবং:nmap <leader>tk <C-w>t<C-w>K
ইয়ান মার্সিনকোভস্কি

324

Ctrl- wদ্বারা অনুসরণ H, J, Kবা L(মূলধন) বর্তমান উইন্ডোটি পর্যন্ত সরে যাবে left, bottom, topবা rightস্বাভাবিক কার্সার পরিভ্রমন যথাক্রমে মত।

লোয়ার কেস সমতুল্য উইন্ডোটি সরানোর পরিবর্তে ফোকাস স্থানান্তর করে।


5
ব্যবহারকারীরা বাফারগুলির মধ্যে যাওয়ার জন্য hjkl ব্যবহার করার কারণে এটি আরও ভাল।
আফশিন মেহরাবানি

30
গৃহীত উত্তরটি একটি ভাল তবে আমার জন্য এই উত্তরটি মনে রাখা সহজ। ধন্যবাদ!
জন কার্টার

নারডট্রি দিয়েও আরও ভাল কাজ করে।
আর্সেল্ডন

এটি উপস্থাপক করে ম্যাকোস-এ আমার জন্য কাজ করে Ctrl- w( আপনার উদাহরণের ^অর্থ আমি জানি না Ctrl)।
জিওভান্নি বেনুসি

@ জিওভান্নি বেনুসি হ্যাঁ, আমি মনে করি এর ^অর্থ Ctrl
ma11hew28

47

যখন আপনার দুটি বা ততোধিক উইন্ডোজ অনুভূমিকভাবে বা উল্লম্বভাবে খোলা থাকে এবং সেগুলি সমস্ত অন্যান্য অভিযোজনে স্যুইচ করতে চান , আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন:

(অনুভূমিক দিকে স্যুইচ করুন)

:windo wincmd K

(উল্লম্ব দিকে স্যুইচ করুন)

:windo wincmd H

এটি কার্যকরভাবে প্রতিটি উইন্ডোতে স্বতন্ত্রভাবে যায় এবং ব্যবহার করে ^WKবা ^WH


31

নিম্নলিখিত প্রাক্তন কমান্ডগুলি যে কোনও উইন্ডো বিভক্ত করবে (পুনরায়):

  • উল্লম্বভাবে বিভক্ত করতে (যেমন উইন্ডোর মধ্যে উল্লম্ব বিভাজক তৈরি করুন), টাইপ করুন :vertical ball
  • অনুভূমিকভাবে বিভক্ত করতে টাইপ করুন :ball

যদি লুকানো বাফার থাকে তবে এই আদেশগুলি জারি করা গোপন বাফারগুলিকে দৃশ্যমান করে তুলবে।


এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ বর্তমান স্বীকৃত উত্তরটি কেবলমাত্র দুটি ফাইলের জন্য কাজ করবে। এই উত্তরটি আরও সম্পূর্ণ।
DrStrangepork

:vert[ical] ballডক তাই :vert ballঠিক আছে এবং সংক্ষিপ্ত।
টাইটু

:ball3 অনুভূমিক উইন্ডোগুলিকে 2 অনুভূমিক উইন্ডোতে হ্রাস করে, 3 টি অনুভূমিক উইন্ডোগুলিকে 3 টি উল্লম্ব উইন্ডোতে :vert ball সঠিকভাবে ম্যাপ করে।
টাইটু

27

ভিআইএম-এ, আপনি যা করতে পারেন তার জন্য বিভিন্ন বিকল্প দেখতে নীচের দিকে নজর দিন:

: উইন্ডো খোলার সাহায্য

এই ক্ষেত্রে:

Ctrl- W s
Ctrl- W o
Ctrl- W v
Ctrl- W o
Ctrl- W s
...


11

অনুভূমিক থেকে উল্লম্ব বিভাজন

Ctrl+ Wউইন্ডো কমান্ডের জন্য, Shift+ Hবা Shift+ এর পরেL


উল্লম্ব থেকে অনুভূমিক বিভাজন

Ctrl+ Wউইন্ডো কমান্ডের জন্য, Shift+ Kবা Shift+ এর পরেJ

কেবলমাত্র দুটি উইন্ডো উপস্থিত থাকলে উভয় সমাধানই প্রয়োগ হয়।


ডিফল্টরূপে উল্লম্ব বিভাজনে সহায়তা খুলুন

এই উভয় লাইন যুক্ত করুন .vimrc:

cabbrev help vert help
cabbrev h vert h

:vert[ical] {cmd}সর্বদা cmdএকটি উল্লম্ব বিভক্ত উইন্ডোতে চালিত করে ।


6

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

function! ToggleWindowHorizontalVerticalSplit()
  if !exists('t:splitType')
    let t:splitType = 'vertical'
  endif

  if t:splitType == 'vertical' " is vertical switch to horizontal
    windo wincmd K
    let t:splitType = 'horizontal'

  else " is horizontal switch to vertical
    windo wincmd H
    let t:splitType = 'vertical'
  endif
endfunction

nnoremap <silent> <leader>wt :call ToggleWindowHorizontalVerticalSplit()<cr>

আমার পক্ষে আরও ভাল কাজ করে যদি আমি এটির মতো একই বিভাজনে থাকতে বাধ্য করি if winnr() == 1 windo wincmd J windo wincmd k else windo wincmd J endif এবং if winnr() == 1 windo wincmd L windo wincmd h else windo wincmd L endifআশা করি যে এটি কার্যকর হয়।
mjhoffmann

5

উপরের দিকে মার্ক রুশাকফের পরামর্শ অনুসারে , এখানে আমার ম্যাপিংটি দেওয়া হচ্ছে:

" vertical to horizontal ( | -> -- )
noremap <c-w>-  <c-w>t<c-w>K
" horizontal to vertical ( -- -> | )
noremap <c-w>\|  <c-w>t<c-w>H
noremap <c-w>\  <c-w>t<c-w>H
noremap <c-w>/  <c-w>t<c-w>H

সম্পাদনা: ব্যবহার করুন Ctrl- w rদুটি উইন্ডো যদি তারা ভালভাবে না থাকে তবে অদলবদল করতে।

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