Đếm số lượng dòng có thể nhìn thấy trong tài liệu với gấp?


7

Tôi muốn viết một plugin tự động đặt foldleveltài liệu mới mở để càng nhiều tài liệu phù hợp với màn hình càng tốt. (Nói cách khác, tôi muốn đảm bảo các tài liệu ngắn được mở hoàn toàn trong khi các tài liệu dài mở hầu hết bị sập.)

Có bất kỳ chức năng tích hợp nào trong vim báo cáo số lượng dòng hiển thị trong tài liệu, với trạng thái gấp hiện tại hoặc mức độ gấp cụ thể không? ( Tức là, các nếp gấp đóng được tính là một dòng, nhưng các dòng bạn phải cuộn xuống để xem cũng được tính.)

Câu trả lời:


6

Ý kiến ​​hay! Đây là một chức năng cơ bản đạt được mục tiêu của bạn bằng cách sử dụng một kỹ thuật khác:

function! FitOnPage()
  normal! zR
  while &foldlevel > 0
    if line('w0') == 1 && line('w$') == line('$')
      break
    endif
    normal! zm
  endwhile
endfunction

Nó hoạt động bằng cách đầu tiên mở rộng tất cả các nếp gấp. Sau đó, nó sẽ đóng các nếp gấp (trên toàn cầu) cho đến khi toàn bộ tài liệu trên màn hình hoặc tất cả các nếp gấp được đóng lại.

Nó kiểm tra xem toàn bộ tệp có trên màn hình hay không bằng cách kiểm tra xem dòng đầu tiên và dòng cuối cùng được hiển thị có phải là dòng đầu tiên và dòng cuối cùng của tệp không.

Bạn có thể cải thiện điều này một chút bằng cách đóng các nếp gấp riêng lẻ, nhưng điều đó sẽ phức tạp hơn rất nhiều.


Đó là một sự thay thế thông minh. Tôi cho rằng nếu bạn thực sự muốn biết có bao nhiêu dòng có thể nhìn thấy trên toàn bộ tài liệu, bạn có thể làm một cái gì đó như thế nào normal G | let i = 0 | while line('.') > 1 | normal k | let i += 1 | endwhile. Có lẽ tôi sẽ đi loanh quanh để mày mò vào cuối tuần này. Cảm ơn!
Ryan Lue

@RyanLue Tôi vừa cập nhật chức năng của mình để sử dụng các line()đối số bạn đã đề cập trong câu trả lời ngắn gọn của bạn thay vì di chuyển con trỏ.
Giàu

Ahahaha Tôi nhanh chóng rút lại câu trả lời đó sau khi tôi nhận ra rằng nó không thực sự làm những gì tôi muốn nó làm ngay từ đầu. Đó là một ngày của bộ não. -_- '
Ryan Lue

@RyanLue Có thể không làm những gì bạn muốn nó làm, nhưng nó chắc chắn làm những gì tôi muốn nó! ;)
Giàu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.