Vim - đếm các dòng trong phạm vi đã chọn


82

Tôi muốn đếm các dòng trong một phạm vi, không quan trọng là phạm vi nào, nhưng hãy để nó giống như một khối hình ảnh. Con đường ngắn nhất để làm điều đó là gì. Tất cả những gì hiện lên trong đầu tôi là: '<,'>s/.//n nhưng tôi không tin đó là con đường ngắn nhất.

Vì vậy, ai đó có thể cho tôi một gợi ý? Cảm ơn trước.

Câu trả lời:


139

Ở chế độ trực quan, nhấn gC-g

Đầu ra điển hình:

Selected 7 of 22 Lines; 8 of 32 Words; 201 of 491 Chars; 201 of 497 Bytes-- VISUAL LINE --


Nguồn : :he count-items(có thể khám phá như: :heTabTab... )


Tuyệt quá! Cảm ơn bạn vì mẹo này, ngay sau 10 phút nữa, tôi sẽ đánh dấu đây là câu trả lời) Nhưng thật thú vị, tuy nhiên, có một chức năng trong vim. Tôi khá chắc chắn nên có một chức năng.
shabunc,

@shabunc: ý bạn là "có hàm trong vim" là sao? Bạn có nghĩa là một cái gì đó bạn có thể :call? Câu hỏi của bạn không đề cập đến điều đó.
Laurence Gonsalves

chức năng chỉ trong cảm giác như khác built-in chức năng ( :h functions;)
shabunc

1
@shabunc Vì vậy, "có", sau đó. Bạn đã không đề cập đến việc bạn muốn một chức năng trong câu hỏi của mình. Tôi không tin rằng tồn tại một hàm tích hợp để đếm số dòng trong một phạm vi, nhưng bạn có thể xác định số dòng của riêng mình một cách khá dễ dàng với hai lệnh gọi đến getpos()(có thể chấp nhận một dấu làm đầu vào và trả về vị trí, bao gồm cả số dòng) và một chút phép trừ.
Laurence Gonsalves

1
@shabunc: Gần nhất tôi có thể tìm thấy là :perl $curbuf->Count(trả về số dòng)
xem

22

Đặt tùy chọn showcmd( :h 'sc') và bạn sẽ không bao giờ cần phải nhập bất cứ thứ gì để biết có bao nhiêu dòng được chọn - lúc đầu, vì tôi quên rằng tôi đã đặt tùy chọn này, tôi không hiểu ý của câu hỏi của bạn. ^^ '

Ngược lại, nếu bạn muốn lấy số đó theo chương trình, bạn chỉ cần:

:echo line("'>") - line("'<") + 1

Từ bên trong một hàm phạm vi, nó cũng có thể được lấy bằng a:lastline-a:firstline+1. ( :h function-range-example)


8

'<,'>s///nngắn hơn một ký tự. :-)

Nếu tôi chỉ muốn biết số dòng trong một lựa chọn trực quan, tôi thường chỉ cần kéo nó (nhấn y). Nó sẽ cho biết "5 dòng bị kéo" hoặc "khối 5 dòng bị kéo" tùy thuộc vào loại lựa chọn.


2
tôi cũng thường giật vì mục đích đó. Và hôm nay tôi chợt nhận ra rằng đó là một thời gian để Lear một cái gì đó mới)))
shabunc
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.