উপরের সমস্ত উত্তর দুর্দান্ত, দুর্ভাগ্যক্রমে এই সমাধানগুলি কুইকফিক্স বা লোকেশনলিস্ট উইন্ডোগুলির সাথে একযোগে কার্যকরভাবে কাজ করে না (এলে কাজ করার জন্য আলে ত্রুটি বার্তা বার্নার চেষ্টা করার সময় আমি এই সমস্যায় পড়েছিলাম)।
সমাধান
অতএব আমি অদলবদল করার আগে এই সমস্ত উইন্ডোজ বন্ধ করার জন্য একটি অতিরিক্ত কোডের লাইন যুক্ত করেছি।
exe ':windo if &buftype == "quickfix" || &buftype == "locationlist" | lclose | endif'
মোট কোড দেখতে দেখতে;
" Making swapping windows easy
function! SwapWindowBuffers()
exe ':windo if &buftype == "quickfix" || &buftype == "locationlist" | lclose | endif'
if !exists("g:markedWinNum")
" set window marked for swap
let g:markedWinNum = winnr()
:echo "window marked for swap"
else
" mark destination
let curNum = winnr()
let curBuf = bufnr( "%" )
if g:markedWinNum == curNum
:echo "window unmarked for swap"
else
exe g:markedWinNum . "wincmd w"
" switch to source and shuffle dest->source
let markedBuf = bufnr( "%" )
" hide and open so that we aren't prompted and keep history
exe 'hide buf' curBuf
" switch to dest and shuffle source->dest
exe curNum . "wincmd w"
" hide and open so that we aren't prompted and keep history
exe 'hide buf' markedBuf
:echo "windows swapped"
endif
" unset window marked for swap
unlet g:markedWinNum
endif
endfunction
nmap <silent> <leader>mw :call SwapWindowBuffers()<CR>
ব্র্যান্ডন অর্থারে অদলবদলের জন্য ক্রেডিট
কেন এটি প্রয়োজন
প্রথমে সমস্ত কুইকফিক্স (কিউএফ) এবং লোকেশনলিস্ট (এলএল) উইন্ডোগুলি সরিয়ে না দিয়ে সোয়াপ ফাংশনগুলি সঠিকভাবে কাজ না করার কারণ হ'ল কিউএফ / এলএল এর পিতামাতারা যদি গেটের গোপন (এবং উইন্ডোতে কোথাও দেখানো হয়নি) বাফার করেন তবে কিউএফ / এটির সাথে যুক্ত এলএল উইন্ডোটি সরানো হবে। এটি নিজের মধ্যে কোনও সমস্যা নয় তবে উইন্ডোটি যখন লুকিয়ে থাকে তখন সমস্ত উইন্ডো নম্বর পুনঃনির্ধারণ করা হয় এবং অদলবদলটি মিশ্রিত হয় যেহেতু প্রথম চিহ্নিত উইন্ডোর সংরক্ষিত নম্বরটি আর থাকে না (সম্ভাব্য) আর থাকে না।
এই পারস্পরিক দৃষ্টিভঙ্গি রাখতে:
প্রথম উইন্ডো চিহ্ন
____________________
| one | -> winnr = 1 marked first g:markedWinNum=1
| | -> bufnr = 1
|__________________|
| two (QF window | -> winnr = 2
| coupled to one |
|__________________|
| three | -> winnr = 3
| | -> bufnr = 2
|__________________|
দ্বিতীয় উইন্ডো চিহ্ন
____________________
| one | -> winnr = 1 g:markedWinNum=1
| | -> bufnr = 1
|__________________|
| two (QF window | -> winnr = 2
| coupled to one) |
|__________________|
| three | -> winnr = 3 marked second curNum=3
| | -> bufnr = 2 curBuf=2
|__________________|
প্রথম বাফার সুইচ, উইন্ডো এক উইন্ডো তিনের বাফার দিয়ে পূর্ণ হয়। সুতরাং কিউএফ উইন্ডোটি মুছে ফেলা হবে কারণ এর আর কোনও প্যারেন্ট উইন্ডো নেই। এটি উইন্ডোজ নম্বরগুলি পুনরায় সাজায়। নোট করুন যে কার্নাম (দ্বিতীয় নির্বাচিত উইন্ডোর সংখ্যা) এমন উইন্ডোটির দিকে ইঙ্গিত করছে যা এর অস্তিত্ব নেই।
____________________
| three | -> winnr = 1 g:markedWinNum=1
| | -> bufnr = 2
|__________________|
| three | -> winnr = 2 curNum=3
| | -> bufnr = 2 curBuf=2
|__________________|
সুতরাং দ্বিতীয় বাফারটি স্যুইচ করার সময়, এটি কারনম উইন্ডোটি নির্বাচন করার চেষ্টা করে, যা এর বেশি কোনও অস্তিত্ব নেই। সুতরাং এটি এটি তৈরি করে এবং বাফারটি স্যুইচ করে, ফলস্বরূপ একটি অযাচিত উইন্ডোটি খালি থাকে।
____________________
| three | -> winnr = 1 g:markedWinNum=1
| | -> bufnr = 2
|__________________|
| three | -> winnr = 2
| | -> bufnr = 2
|__________________|
| one | -> winnr = 3 curNum=3
| | -> bufnr = 1 curBuf=2
|__________________|