Có hai cách này có thể được thực hiện, cách vimscript thuần túy và wc
cách.
Cách vim thuần
Bạn có thể sử dụng lệnh tìm kiếm và thay thế để làm điều này. Ví dụ:
:%s/\<\w\{-}\>//gn
Điều này làm là thay vì thay thế một mẫu nhất định bằng một cái gì đó, nó chỉ đếm các lần xuất hiện của mẫu. Điều này là do n
cờ. Để đếm các từ trong một phần cụ thể (trong trường hợp này là dòng 5 đến 15), bạn có thể làm một cái gì đó như thế này:
:5,15s/\<\w\{-}\>//gn
Điều này loại bỏ sự cần thiết phải đưa nội dung của lựa chọn vào một thanh ghi. Để xem nhiều khả năng hơn cho những gì có thể được đặt thay thế 5-15
, hãy đọc chủ đề trợ giúp cho cmdline-ranges
. Nếu bạn muốn làm điều này thường xuyên, có lẽ tốt để tạo một ánh xạ (hoặc lệnh) cho nó. Ngoài ra, nếu bạn đã hlsearch
bật, bạn có thể muốn chạy :nohlsearch
sau đó để xóa phần tô sáng.
các wc
cách
Điều tương tự có thể được thực hiện với wc
. Theo cùng một cách bạn có thể sử dụng cmdline-ranges
để chọn khu vực có :s
lệnh, bạn có thể sử dụng chúng với các lệnh bên ngoài. Ví dụ:
:5,15!wc -w
Điều này chạy các dòng 5 đến 15 thông qua wc
lệnh. Nhược điểm của việc này là nó thay thế phạm vi dòng đó bằng đầu ra của lệnh. Bạn có thể hoàn tác thay đổi này bằng cách nhấn u
. Cũng lưu ý rằng giải pháp vimscript có thể không hoạt động với các ngôn ngữ khác nhau, vì \w
không khớp với những gì thường là ký tự từ trong các ngôn ngữ khác. wc
có thể làm tốt hơn lúc này hơn \w
. Ngoài ra, đây là một lệnh ưa thích để làm nhanh hơn để làm điều này:
command -range=% -addr=lines WordCount execute '<count>!wc -w' | .y a | undo | echo @a
Lưu ý rằng điều này làm tắc nghẽn thanh a
ghi.
Ghi chú
Dường như điều này cũng có thể được thực hiện trong chế độ trực quan với g<C-g>
tổ hợp phím. Xem câu trả lời của Carpetsmoker để được giải thích về điều này.