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


24

একটি উইন্ডোতে একাধিক বিভাজন সহ একটি কেস বিবেচনা করুন। ভিআইএম দ্রুত উইন্ডোটি পুরো উইন্ডোটি ধরে নিতে "বিস্তৃত" করতে সক্ষম করে <C-W> o

পূর্বে বিদ্যমান স্প্লিটগুলি "মনে রাখার" উপায় কি কার্যকর করার পরে এবং মৃত্যুদন্ড কার্যকর করার পরে এই অবস্থায় ফিরে যেতে পারে <C-W> o?

সম্পাদনা: পরিষ্কার করার জন্য, আমি কোনও তৃতীয় পক্ষের প্লাগইন ব্যবহার না করে এটি করার উপায় খুঁজছি।


1
আমি এই উত্তরটি প্রাসঙ্গিকভাবে পেয়েছি , তবে আমি যদি সম্ভব হয় তবে প্লাগইন ছাড়াই এই কার্যকারিতাটি রাখতে চাই।
ভড়গব ভাট

5
একটি মন্তবীর পরিবর্তে, প্রশ্নে নিজেই এর মতো প্রয়োজনীয়তা অন্তর্ভুক্ত করুন।
মুড়ু

এই প্রশ্নটি যদি অন্য স্ট্যাকেক্সচেঞ্জ সাইটে হয় তবে এটি সদৃশ হিসাবে বিবেচিত হবে? stackoverflow.com/q/13194428/1698426
জন স্মিট

উত্তর:


14

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

আপনি ব্যবহার করে একটি নতুন সেশন ফাইল তৈরি করতে পারেন :mksession <filename>। আপনি উত্পন্ন সেশন স্ক্রিপ্ট কার্যকর করে সেই সেশনটি পুনরুদ্ধার করতে পারেন :source <filename>,।

সুতরাং, আপনি উইন্ডোটি সর্বাধিক করার আগে বর্তমান সেশনটি সংরক্ষণ করতে পারেন এবং উইন্ডোটি "আনম্যাক্সিমাইজ" করতে চাইলে পুনরুদ্ধার করতে পারেন।

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

  • nnoremap <C-w>o :mksession! ~/session.vim<CR>:wincmd o<CR>এবং তাই সমস্ত উইন্ডোটিং কমান্ডগুলির জন্য আপনি সমর্থন করতে চান (দেখুন :help CTRL-W, অনেক কিছুই আছে)। !একটি বিদ্যমান অধিবেশন ফাইল কে overwrite সংক্রান্ত বাধা ত্রুটি।
  • nnoremap <C-w>u :source ~/session.vim<CR> শেষ উইন্ডোটিং কমান্ডটি "পূর্বাবস্থাপন" করতে।

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


11

অন্য বিকল্পটি হ'ল একটি নতুন ট্যাবে আপনার বর্তমান উইন্ডোটি খুলতে হবে, তারপরে আপনার কাজ শেষ হয়ে গেলে কেবল ট্যাবটি বন্ধ করুন।

:split(অথবা :spসংক্ষেপে) কমান্ড একটি আর্গুমেন্ট ছাড়া, বর্তমান বিভক্ত হিসাবে একই বাফার দিয়ে একটি নতুন বিভক্ত খোলার প্রভাব রয়েছে। :tabকমান্ড অনেক জানালা সংক্রান্ত নির্দেশগুলো চালাতে পারেন, তাদের একটি ট্যাব পরিবর্তে ব্যবহার করার জন্য পরিবর্তন। এগুলি একত্রিত করে দেয় :tab spযা বর্তমান বাফারের সাথে একটি নতুন ট্যাব খুলবে।

এরপরে, আপনি :qবা :tabclose( :tabcসংক্ষেপে) এর সাথে নতুন ট্যাবটি বন্ধ করতে পারেন ।


2

আমি এই দৃশ্যের জন্য জুমউইন প্লাগইন ( https://github.com/itspriddle/ZoomWin ) ব্যবহার করি। টিপলে CtrlW- Oএকটি দ্বিতীয় সময় আপনার উইন্ডো বিন্যাস পুনরুদ্ধার।


1
পরামর্শের জন্য ধন্যবাদ, তবে আমি আমার প্রশ্নে যেমন নোট করেছি, আমি এটি জানতে চাই যে এটি একটি প্লাগইন ছাড়াই করা যায় কিনা।
ভরগব ভাট

1
জুম আউট করার সময় এই প্লাগইনটি কোনও কারণে আমার জন্য ধীর ছিল। অন্য কেউ একই সমস্যা আছে?
19:44

2

আপনি যা বর্ণনা করছেন তা হ'ল বৈশিষ্ট্যটির মতো যা "জুমিং" নামে চলে by এসও তে ইতিমধ্যে একটি দুর্দান্ত উত্তর রয়েছে যা এটি খুব ভাল করে।

সম্পাদনা: সুস্পষ্ট উত্তর, অনুলিপি করে এসও থেকে আটকানো । আমি আমার .vimrc এর নীচে স্নিপেটটি রেখেছি এবং তারপরে অনুরোধ করছি

:ZoomToggle

আমার ভিআইএম কমান্ড প্রম্পটে।

" Zoom / Restore window.
function! s:ZoomToggle() abort
    if exists('t:zoomed') && t:zoomed
        execute t:zoom_winrestcmd
        let t:zoomed = 0
    else
        let t:zoom_winrestcmd = winrestcmd()
        resize
        vertical resize
        let t:zoomed = 1
    endif
endfunction
command! ZoomToggle call s:ZoomToggle()
nnoremap <silent> <C-A> :ZoomToggle<CR>

যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে।
মুরু

ডাউনটা কেন?
জন স্মিট

আমি না. সম্ভবত যারাই এটি পতাকাঙ্কিত করেছে।
মারু

লিঙ্কের চেয়ে এসও থেকে অনুলিপি-অনুলিপি বেশি কার্যকর নয়
অ্যালেক্সান্ডার

আমি রাজী. আমি করতে পারে সবচেয়ে দরকারী জিনিস কি হতে পারে?
জন স্মিট

0

এই পোস্টটি পুরানো, গৃহীত উত্তর সম্পর্কে উদ্বেগ নেই terminal buffer

গৃহীত উত্তরটি sessionকৌতুকটি করতে ব্যবহার করে তবে sessionপুরোপুরি পুনরুদ্ধার করতে পারে না terminal buffer:

                            *terminal-session*
A terminal window will be restored when using a session file, if possible and
wanted.

If "terminal" was removed from 'sessionoptions' then no terminal windows will
be restored.

If the job in the terminal was finished the window will not be restored.
...

টমকডোর উত্তর এখনও কার্যকর, <c-w>:tab splitভাল কাজ করে terminal buffer। এটি একটি মানচিত্রের প্রাপ্য:

nnoremap <c-w><space> :tab split<cr>
tnoremap <c-w><space> <c-w>:tab split<cr>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.