การค้นหานี้จะย้าย 40 ตัวอักษร (ไม่ใช่ไบต์) ไปข้างหน้า:
/\_.\{40}/e
โดยการค้นหา 40 ตัวอักษร ( \{40}
) ทุกประเภทรวมถึงการขึ้นบรรทัดใหม่ ( \_.
) และวางเคอร์เซอร์ที่ท้ายการค้นหา ( /e
) ดู: http://vimregex.com/#Non-Greedy , :help search-offset
และ:help \_
ดูที่:h 23.4
การแก้ไขไบนารีด้วย
อัปเดต: ตามคำตอบนี้นี่คือฟังก์ชั่นที่ข้ามไปเป็นไบต์ออฟเซ็ต:
let s:last_jump_bytes = 0
function! JumpTo(byte_nr)
let crt_byte = line2byte(line('.')) + col('.')
if (a:byte_nr == 0)
let dst_byte = crt_byte + s:last_jump_bytes
else
let dst_byte = crt_byte + a:byte_nr
let s:last_jump_bytes = a:byte_nr
endif
let dst_line = byte2line(dst_byte)
let dst_col = dst_byte -line2byte(dst_line)
"remove next line if you don't want to record this for `Ctrl-O`
execute "normal " . dst_line . "G"
call setpos('.', [0, dst_line, dst_col])
endfunction
command! -nargs=1 JumpToOffset :call JumpTo(<f-args>)
" silly mapping to Ctrl-C (demo)
nnoremap <expr> <silent> <c-c> ":<c-u>call JumpTo(" . v:count . ")<cr>"
สามารถใช้สิ่งนี้:
:JumpToOffset 400
หรือพิมพ์การแมปแป้นพิมพ์ที่แมปด้วยการนับ:
40CTRL-C
หากคุณไม่ได้ใช้การนับจำนวนการนับก่อนหน้านี้จะถูกนำมาใช้ใหม่ ดังนั้นคุณสามารถทำได้: 40CTRL-C CTRL-C CTRL-C 30CTRL-C CTRL-C
เพื่อกระโดด 40, 40, 40, 30, 30 ไบต์เป็นต้น
กดCtrl-O
เพื่อกระโดดกลับ (ดูความคิดเห็นภายในฟังก์ชั่น)
Xl
(ซึ่งX
เป็นจำนวนอักขระ) หรือจำนวนตัวอักษรตามด้วยลูกศรขวา