ฉันมีปัญหาเดียวกันอย่างแน่นอนและพบว่าปลั๊กอิน EnhancedJump ค่อนข้างใหญ่และต้องการการพึ่งพาที่มากขึ้น ฉันเขียนฟังก์ชันเล็ก ๆ ที่คำนวณจำนวน<C-O>
/ <C-I>
จำเป็นเพื่อข้ามไปยังบัฟเฟอร์ที่แตกต่างจากบัฟเฟอร์ปัจจุบัน จัมพลิสต์ยังคงสะอาดทำแผนที่ให้<leader><C-O>/<C-I>
เหมาะกับความต้องการของฉันในวิธีที่น้อยที่สุด
<leader><C-O>
ข้ามไปที่การกระโดดครั้งสุดท้ายของบัฟเฟอร์ก่อนหน้าใน jumplist
<leader><C-I>
ทำสิ่งเดียวกันและย้ายไปยังบัฟเฟอร์ถัดไปใน jumplist
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 โดยอักขระ CTRL + o และ CTRL + i จริงด้วย CTRL + v ฉันไม่รู้ว่าทำไมยกเว้นสตริง"<C-O>"
และ"<C-I>"
ไม่ทำงานเมื่อnormal!
สั่งงานคำสั่ง