この検索動く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
は文字数)または右矢印が続く文字数を使用できます。