답변:
이 시도:
function! FileOffset()
return line2byte(line('.')) + col('.') - 1
endfunction
이는 1 기반과 동일하다, 파일의 오프셋 (offset)를 돌려줍니다 %o
에서 statusline
. 물론 1을 빼서 0 기반 오프셋을 얻을 수 있습니다.
:help col()
: [t] 그 결과는 Number이며 {expr}로 주어진 열 위치의 바이트 인덱스입니다 . 나는 그것이 1- 기반 바이트 오프셋이라고 생각합니다.
abcäb
합니까? (확인하지 않았습니다)
다른 대답은 내가 줄을 종료하지 않고 바이너리 파일을 열 때 나를 위해 작동하지 않았다. eol없이 바이너리 파일에서 바이트를 계산할 때 vim에 버그가있는 것 같습니다. (편집 :. 예,이이었다 버그 나는 한 패치 제출 있어, 7.4.781으로 인정을 ).
이전 Vim 버전의 버그를 고려하면서 바이트 오프셋을 찾으려면 다음을 사용하십시오.
let offset = line2byte(line('.')) + col('.') - 1
if version < 781 && &l:binary == 1 && &l:eol == 0
" Vim prior 7.4.781 had a bug where the line count is off by 1 or 2.
" See https://groups.google.com/forum/#!msg/vim_dev/zX45zm-cnc0/-BWjjh5tlX8J
let offset += 1
let offset += line('.') == 1
endif
이 버그는 또한 %o
예를 들어 지정자 에도 영향을줍니다 rulerformat
.
col('.')
실제로 줄에 바이트 오프셋을 반환합니까? 마지막으로, 커서 열이 표시되었습니다.