วิธีการนับตัวอักษรในบัฟเฟอร์รวมถึงช่องว่าง?


12

ฉันต้องดูว่าตัวละครมีข้อความเท่าไหร่ในขณะที่ฉันพิมพ์ ฉันพบหน้าของ Emacs Wiki: จำนวนคำและมีวิธีแก้ปัญหาที่ใกล้เคียงกับสิ่งที่ฉันต้องการ: ฉันใช้คำตอบที่สองจากหน้านี้ (แสดงจำนวนคำในโหมดบรรทัด) เพราะมันแสดงจำนวน ตัวละครเช่นกัน

แต่มันไม่นับช่องว่าง มีวิธีแก้ไขปัญหาใดบ้างที่จะแสดงจำนวนตัวอักษรรวมถึงช่องว่างในโหมดบรรทัด เป็นการดีที่จะกำหนดจำนวนอักขระเป้าหมาย (แต่ไม่จำเป็น)

คำตอบ:


4

mode-line-formatตัวแปรแล้วมีความสามารถในการที่ในตัวตัวอย่างต่อไปนี้ควรเพิ่มว่าใกล้ถึงจุดสิ้นสุดของโหมดเส้นของคุณ

(add-to-list 'global-mode-string '(" %i"))

จากหมอ:

% i - พิมพ์ขนาดของบัฟเฟอร์

ในทางเทคนิคขนาดนี้เป็นไบต์ดังนั้นจึงอาจไม่ตรงกับจำนวนตัวอักษรอย่างสมบูรณ์ทั้งนี้ขึ้นอยู่กับการเข้ารหัสที่คุณใช้

คุณสามารถลอง, M-x size-indication-mode.


หากจำนวนไบต์ไม่เป็นที่พอใจคุณคุณสามารถใช้ตัวอย่างต่อไปนี้ซึ่งอาจหรืออาจไม่ก่อให้เกิดความล่าช้าในขณะที่คุณพิมพ์บนบัฟเฟอร์ขนาดใหญ่มาก

(add-to-list 'global-mode-string
             '(:eval (format " %s"
                       (let ((tab-width 1))
                         (string-width (buffer-string))))))

10

อีกทางหนึ่งให้นับคำและตัวอักษรรวมถึงช่องว่างในรายการที่เลือก:

M-x count-words-region

4

M->C-x =หรือคุณอาจจะเพียงแค่ ข้อมูลที่เกี่ยวข้องจะปรากฏใน minibuffer (คำสั่งที่ใช้: end-of-bufferและwhat-cursor-position)


3

ฉันคิดว่าคำตอบอื่นให้ข้อมูลที่เป็นประโยชน์กับคุณ คุณสามารถใส่สิ่งที่คุณต้องการในโหมดสายและสถานที่หนึ่งที่จะเริ่มต้นและตัวแปรsize-indication-modemode-line-position

คำตอบอื่น ๆ โดยทั่วไปจะบอกตำแหน่งของบัฟเฟอร์ปัจจุบันที่สัมพันธ์กับจุดเริ่มต้นของบัฟเฟอร์ (หรือจุดเริ่มต้นของข้อ จำกัด ปัจจุบันหากแคบลง)

บางครั้งคุณอาจต้องการตำแหน่งที่สัมพันธ์กับตำแหน่งอื่น สำหรับสิ่งนั้นไลบรารีmodeline-posn.elสามารถช่วย (ดูตำแหน่งบรรทัดโหมด )

เมื่อภูมิภาคไม่ทำงานมันจะแสดงข้อมูลตามปกติ (ดีขึ้นเล็กน้อย) แต่เมื่อมีการใช้งานมันจะแสดงให้คุณ (ในโหมดบรรทัด) จำนวนตัวอักษรและบรรทัดในการเลือก (ภูมิภาค) เพื่อดูตำแหน่งปัจจุบันที่สัมพันธ์กับตำแหน่งอื่นเพียงแค่ใช้C-SPCเพื่อกำหนดเครื่องหมายที่ตำแหน่งใดตำแหน่งหนึ่ง C-x C-xเปิดใช้งานพื้นที่ซึ่งจะแสดงขนาดเป็นตัวอักษร (และเส้น) ในโหมดบรรทัด


2

นอกจากว่าฉันเข้าใจผิดคุณสามารถใช้point-maxเพื่อรับจำนวนอักขระในบัฟเฟอร์:

(defun count-chars ()
  (interactive)
  (save-restriction
    (widen)
    (message "%s characters" (1- (point-max)))))

1
ใช้งานได้ แต่นี่ไม่ใช่สิ่งที่ฉันต้องการ: ฉันต้องการมีจำนวนตัวละครอยู่ต่อหน้าต่อตาของฉันในขณะที่ฉันพิมพ์ไม่ได้รับ "ตามต้องการ"
Aglavra

@Aglavra เพิ่มเข้าไปในโหมดบรรทัดของคุณ
Jordon Biondo

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