আমার ঠিক একই সমস্যা ছিল এবং আমি দেখেছি যে এনহানসড জাম্প প্লাগইনটি বেশ বড় এবং এর চেয়েও বড় অবক্ষয়ের প্রয়োজন। আমি একটি ছোট ফাংশন লিখেছি যা বর্তমানের চেয়ে আলাদা বাফারে ঝাঁপিয়ে পড়ার <C-O>
/ <C-I>
প্রয়োজনীয় সংখ্যাকে গণনা করে । জাম্পলিস্টটি পরিষ্কার থাকে, এটিকে ম্যাপিং <leader><C-O>/<C-I>
করে আমার প্রয়োজনকে ন্যূনতম উপায়ে ফিট করে।
<leader><C-O>
জাম্পলিস্টে আগের বাফারের শেষ জাম্পে ঝাঁপ দেয়।
<leader><C-I>
একই কাজ করে এবং জাম্পলিস্টে পরবর্তী বাফারে চলে আসে।
function! JumpToNextBufferInJumplist(dir) " 1=forward, -1=backward
let jl = getjumplist() | let jumplist = jl[0] | let curjump = jl[1]
let jumpcmdstr = a:dir > 0 ? '<C-O>' : '<C-I>'
let jumpcmdchr = a:dir > 0 ? '^O' : '^I' " <C-I> or <C-O>
let searchrange = a:dir > 0 ? range(curjump+1,len(jumplist))
\ : range(curjump-1,0,-1)
for i in searchrange
if jumplist[i]["bufnr"] != bufnr('%')
let n = (i - curjump) * a:dir
echo "Executing ".jumpcmdstr." ".n." times."
execute "silent normal! ".n.jumpcmdchr
break
endif
endfor
endfunction
nnoremap <leader><C-O> :call JumpToNextBufferInJumplist(-1)<CR>
nnoremap <leader><C-I> :call JumpToNextBufferInJumplist( 1)<CR>
আসল সিটিআরএল + ও এবং সিটিআরএল + আই এর সাথে সিটিআরএল + ভি দ্বারা প্রতিস্থাপন করতে ^O
এবং ^I
লাইন 4 এ ভুলে যাবেন না । আমি জানি না কেন স্ট্রিংগুলি "<C-O>"
এবং কমান্ড "<C-I>"
কার্যকর করার সময় কাজ করে নি normal!
।