Tôi đang tìm cách viết một chức năng mà tôi có thể gọi từ bản đồ. Ý tưởng là để thay đổi kích thước một cửa sổ để phù hợp với nội dung bộ đệm. Điều này không quá khó khăn:Làm cách nào để thay đổi kích thước cửa sổ cho vừa, chỉ tính đến các đường logic?
fu! ResizeWindow(vert) "{{{
if a:vert
let longest = max(map(range(1, line('$')), "virtcol([v:val, '$'])"))
exec "vertical resize " . (longest+4)
else
exec 'resize ' . line('$')
1
endif
endfu "}}}
Tuy nhiên, tôi muốn tính các đường logic khi tính chiều cao (Tôi không quá lo lắng về chiều rộng). Ví dụ, một dòng đã bọc (do :set wrap
) sẽ được tính là hai hoặc nhiều dòng. Một khối gồm 37 dòng được gấp lại sẽ chỉ được tính là một.
Có ai biết cách thuận tiện để nhận 'số dòng logic' này mà không phải thử và tính toán thủ công không? Nếu tôi cần phải làm điều này bằng tay là có bất kỳ trường hợp nào khác mà tôi đang thiếu mà có thể gây ra một dòng được đại diện với một số dòng khác nhau tiềm năng?
Cảm ơn! Đó chính xác là những gì tôi đang tìm kiếm. –