ฉันจะนับจำนวนคำในไฟล์ขณะแก้ไขไฟล์เป็นกลุ่มได้อย่างไร


21

ฉันรู้ว่าฉันสามารถใช้wcสำหรับการนับตัวอักษรคำและบรรทัดของไฟล์ที่บรรทัดคำสั่ง

มีวิธีใดบ้างที่ฉันสามารถนับจำนวนคำในขณะที่เป็นกลุ่ม ?

คำตอบ:


22

คุณสามารถนับคำและบรรทัดภายในviโดยใช้viตัวนับของ:

กดgแล้ว-CTRL gจากนั้นบรรทัดล่างจะมองหาตัวอย่างเช่นนี้

Col 1 of 11; Line 1 of 106; Word 1 of 344; Byte 1 of 2644

หรือใช้viวิธีการในการเรียกคำสั่งเชลล์:

:w !wc -w

สิ่งนี้เรียก:wคำสั่งsave ( ) ก่อนจากนั้นจึงwc -wแสดงผลลัพธ์ ตัวอย่าง:

:w !wc -w
344

Press ENTER or type command to continue

กดที่จะกลับไปEntervi


มันเป็นคำอธิบายที่ไม่ถูกต้องของการ:w !<cmd>สร้าง มันเขียนบัฟเฟอร์ปัจจุบันไปยังท่อที่เชื่อมต่อกับคำสั่ง ไม่มีสัญญาว่าจะเขียนบัฟเฟอร์ปัจจุบันไปยังไฟล์แยกต่างหาก อย่างไรก็ตามมันทำในสิ่งที่คำถามถาม
mcepl

1

คุณยังสามารถลองเป็น:!wc %กลุ่มได้แม้ว่าจะนับขนาดของไฟล์ในดิสก์ไม่ใช่สิ่งที่อยู่ในบัฟเฟอร์ของ Vim นี่อาจเป็นหรือไม่ใช่สิ่งที่คุณต้องการ


สิ่งนี้นับสิ่งที่อยู่บนดิสก์ (ถ้ามี) ไม่ใช่สิ่งที่อยู่ในบัฟเฟอร์ - ดังนั้นหากคุณเปลี่ยนเนื้อหาของบัฟเฟอร์ตั้งแต่บันทึกครั้งสุดท้ายหรือไม่ได้บันทึกเลยคุณจะได้รับจำนวนผิด (หรือแม้แต่ข้อผิดพลาดหาก คุณกำลังสร้างไฟล์)
Stephen Kitt

ในทางตรงกันข้ามสตีเฟ่นนี่เป็นคำตอบที่ถูกต้องสำหรับ "ฉันจะนับจำนวนคำในไฟล์ในขณะที่แก้ไขไฟล์เป็นกลุ่มได้อย่างไร" ในขณะที่คำตอบที่ได้รับการยอมรับไม่พูดอย่างเคร่งครัด (แม้ว่ามันจะคลุมเครือก็ตาม )
Michael Homer

ตลกที่มันคล้ายกัน (ลบ-wธงเพื่อ จำกัด ผลลัพธ์เป็นคำเท่านั้น) เพื่อลบคำตอบจาก 2014 โดย D_Bye (ที่เห็นได้ชัดว่าตนเองลบ)
Jeff Schaller

0

ปลั๊กอินเช่นvim-airlineสามารถให้การนับจำนวนคำสำหรับไฟล์ (และการเลือก) เป็นส่วนหนึ่งของแถบสถานะ


คำตอบนี้ไม่ได้ลิงค์เท่านั้น ฉันไม่ได้รวมเฉพาะปลั๊กอินที่เฉพาะเจาะจงเนื่องจาก (เช่นที่คุณพูด) ปลั๊กอินบางอย่างอาจล้าสมัย
Patrick Sanan

ฉันยืนแก้ไขแล้ว อย่างไรก็ตามฉันจะบอกว่าในอนาคตคุณควรพยายามรวมขั้นตอนที่เกี่ยวข้องเพื่อใช้โซลูชันที่คุณกำลังนำเสนอ ขอขอบคุณ!
kemotep

0

สำหรับผู้ที่ต้องการนับจำนวนคำในข้อความที่กำหนด (ไม่ใช่ไฟล์ทั้งหมด) ให้ใช้\S\+regexp

  1. เลือกข้อความที่สนใจ (โหมดภาพ)
  2. :s/\S\+//gn

ผล. เสียงเรียกเข้าจะแสดงให้คุณเห็นสิ่งนี้:10 matches on 1 line

เมื่อคุณกด:ในโหมดภาพ, เสียงเรียกเข้าจะเพิ่มคำสั่งของคุณด้วย'<,'>ซึ่งหมายถึงการใช้คำสั่งกับข้อความที่เลือก

\S\+ จับคำนั่นคือกลุ่มของตัวละครคั่นด้วยช่องว่าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.