Tìm kiếm này di chuyển 40 ký tự (mặc dù không phải byte) về phía trước:
/\_.\{40}/e
bằng cách tìm kiếm chính xác 40 ký tự ( \{40}
) của bất kỳ loại nào, bao gồm dòng mới ( \_.
) và đặt con trỏ ở cuối tìm kiếm ( /e
). Xem: http://vimregex.com/#Non-Greedy , :help search-offset
và:help \_
Ngoài ra, xem :h 23.4
để chỉnh sửa nhị phân.
Cập nhật: Dựa trên câu trả lời này , đây là một hàm chuyển sang bù byte:
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>"
Có thể được sử dụng như thế này:
:JumpToOffset 400
hoặc gõ ánh xạ bàn phím được ánh xạ, với số đếm:
40CTRL-C
Nếu bạn không sử dụng số đếm, số đếm trước đó sẽ được sử dụng lại. Vì vậy, bạn có thể làm: 40CTRL-C CTRL-C CTRL-C 30CTRL-C CTRL-C
để nhảy 40, 40, 40, 30, 30 byte, v.v.
Nhấn Ctrl-O
để nhảy trở lại (xem bình luận bên trong chức năng).
Xl
(X
số lượng ký tự) hoặc số lượng ký tự theo sau Mũi tên phải.