Durum satırında geçerli bayt uzaklığını görüntüleyebildiğinizi gördüm %o
, ancak aynı şeyi yapan bir işlev veya komut bulamadım. Geçerli baytın pragmatik olarak dengelenmesinin bir yolu var mı?
Durum satırında geçerli bayt uzaklığını görüntüleyebildiğinizi gördüm %o
, ancak aynı şeyi yapan bir işlev veya komut bulamadım. Geçerli baytın pragmatik olarak dengelenmesinin bir yolu var mı?
Yanıtlar:
Bunu dene:
function! FileOffset()
return line2byte(line('.')) + col('.') - 1
endfunction
Bu 1-esaslı aynı olan dosya konumunu geri %o
içinde statusline
. Tabii ki, 0 tabanlı ofseti almak için 1 çıkarabilirsiniz.
:help col()
: [t], {expr} ile verilen sütun konumunun bayt endeksi olan bir Sayıdır . Ben 1 tabanlı bayt ofset olduğunu ...
abcäb
mı? (Kontrol
Diğer cevap Ben çizgi bitirmeden bir ikili dosya açıldığında benim için çalışmadı. Eol olmadan bir ikili dosyada bayt sayma söz konusu olduğunda vim'de bir hata var gibi görünüyor. (düzenleme:. evet, bu bir hata ben var bir yama gönderilen var, 7.4.781 kabul ).
Bayt uzaklığını bulmak için, eski Vim sürümlerinde hatayı hesaplarken şunu kullanın:
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
Bu hata ayrıca %o
örn rulerformat
.
col('.')
aslında satırdaki bayt uzaklığını döndürüyor mu? Son baktım, sadece imleç sütununu gösterdi.