มีตัวเลือกอะไรบ้างในการตรวจสอบการสะกดคำใน emacs


19

เนื่องจากขณะนี้ฉันทำงานที่ไม่ใช่การเขียนโปรแกรมจำนวนมากใน Emacs การตรวจสอบการสะกดกลายเป็นหนึ่งในข้อกังวลหลักของฉันอีกครั้ง

ฉันสังเกตเห็นว่ายังไม่มีคำถามเกี่ยวกับตัวเลือกสำหรับการตรวจสอบการสะกดคำใน Emacs ดังนั้นเราไปที่นี่:

ฉันมีตัวเลือกอะไรบ้างในการตรวจสอบการสะกดคำใน Emacs

โดยเฉพาะอย่างยิ่ง

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

แก้ไข:ง่ามปิด"อื่น ๆ"สิ่งที่อยู่ในคำถามที่แยกจากสิ่งที่ตัวเลือกจะมีการเขียนตำราที่ดีขึ้นใน emacs


1
ฉันแนะนำหน้านี้: การสะกดคำใน Emacs
ลุค

1
ขณะที่มันยืนคำถามนี้กว้างเกินไป ฉันขอแนะนำให้ จำกัด ไว้ที่สัญลักษณ์แสดงหัวข้อย่อยที่สอง (เลือกการตรวจสอบการสะกด) และอาจถามเกี่ยวกับไวยากรณ์แยกต่างหาก
Gilles 'หยุดความชั่วร้าย'

เฉพาะสองรายการแรกของคุณที่เกี่ยวกับการตรวจสอบการสะกดคำ ไวยากรณ์และภาษาไม่ได้ตรวจการสะกดและทั้งสามข้อสุดท้ายของคุณจะทำให้คำถามแตกต่างกันโดยสิ้นเชิง
Malabarba

1
แม้ว่าฉันจะไม่เห็นด้วยจริง ๆ ว่าคำถามเดิมนั้นกว้างเกินไปหรือประกอบด้วยคำถามที่แตกต่างกันสองคำถาม แต่ฉันได้แยกส่วนที่สอง ตอนนี้คำถามนี้เกี่ยวกับการตรวจการสะกดเท่านั้นอีกคำถามหนึ่งเกี่ยวกับการตรวจสอบไวยากรณ์และการเขียนข้อความที่ดีกว่า
elemakil

คำตอบ:


10
  • สำหรับการตรวจสอบการสะกดคำโดยทั่วไปมีตัวเลือกยอดนิยมค่อนข้างน้อย
    1. ispellและเพื่อน: สร้างขึ้นใน emacs ispell-bufferและมักจะเรียกว่ามี ตรวจสอบการสะกดคำตามความต้องการเท่านั้น
    2. flyspell-mode: ในตัวและให้การตรวจสอบการสะกดคำทันทีและเน้นความผิดพลาด
    3. speck-mode: มีให้จาก MELPA มันจะตรวจสอบการสะกดคำเมื่อคุณหยุดหลังจากพิมพ์ นอกจากนี้ยังมีคุณสมบัติที่แตกต่างเล็กน้อยจากโหมด flyspell เช่นสามารถใช้พจนานุกรมหลายเล่มในบัฟเฟอร์เดียวกัน (ข้อจำกัดความรับผิดชอบ: ฉันใช้โหมดนี้ในเวลาสั้น ๆ ย้อนกลับไปนาน)

โปรดทราบว่าทั้งหมดข้างต้นจำเป็นต้องใช้โปรแกรมตรวจสอบการสะกดคำเฉพาะเช่นaspellหรือhunspellพจนานุกรมที่เหมาะสม โหมดจัดเตรียมอินเตอร์เฟส emacs ที่สะดวกสบายให้กับโปรแกรมบรรทัดรับคำสั่งเท่านั้น

  • สำหรับการตรวจสอบการสะกดคำแบบเลือกคุณสามารถปรับแต่งflyspell-modeตัวแปรได้flyspell-generic-check-word-predicateโดยการเดินสายฟังก์ชันที่เลือกคำที่ต้องตรวจสอบ ตัวอย่างที่แสดงไว้ของคุณนั้นง่าย - เพียงแค่ใช้flyspell-prog-modeซึ่งจะตรวจสอบความคิดเห็นในบัฟเฟอร์รหัสเท่านั้น

1
ก่อนอื่นให้ฉันขอบคุณสำหรับคำตอบของคุณ การติดตามความคิดเห็นโดย Gilles และ Malabarba ฉันได้แยกคำถามออกเป็นสองส่วน ดังนั้นฉันขอแนะนำให้คุณโพสต์ส่วนที่สองของคำตอบ (ส่วนที่เกี่ยวกับweasel-word) เป็นคำตอบสำหรับคำถามใหม่ คุณสามารถค้นหาลิงค์ในคำถามเดิมของฉัน
elemakil

กรุณาเพิ่มwcheckในรายการของคุณ เป็นสิ่งที่ดีมาก แต่flyspellเมื่อไม่นานมานี้ฉันก็ไม่ได้ใช้wcheckอีกต่อไป
rasmus

สำหรับ OSX เวอร์ชันที่กำหนดเองสูงของ Emacs ที่เรียกว่า Aquamacs นั้นมีการสนับสนุนในตัวสำหรับเครื่องตรวจการสะกด OSX ดั้งเดิม (รวมถึงพจนานุกรมผู้ใช้ OSX ที่ประกอบไปด้วยคำที่ผู้ใช้เพิ่ม) นั่นเป็นไอเท็มพิเศษที่ไม่มีรุ่น Emacs อื่น ๆ ให้บริการ
กฎหมาย

6

คำตอบ @ Vamsi ครอบคลุมการตรวจสอบการสะกดคำทั่วไปและใช้งานทั่วไปอยู่แล้ว แต่สิ่งที่เกี่ยวกับการแก้ไขอัตโนมัติส่วนบุคคล ? @Malabarba มีโพสต์ดีเกี่ยวกับหัวข้อนี้เขาบล็อก แนวคิดพื้นฐานคือการจัดเก็บคู่ของคำที่สะกดผิดและการแก้ไขที่เหมาะสมตามที่Abbrevs นี่คือ (เวอร์ชันที่แก้ไขเล็กน้อย) รหัสที่ให้คุณทำสิ่งนี้ได้อย่างง่ายดาย:

(defun ispell-word-then-abbrev (p)
  "Call `ispell-word'. Then create an abbrev for the correction made.
With prefix P, create local abbrev. Otherwise it will be global."
  (interactive "P")
  (let ((before (downcase (or (thing-at-point 'word) "")))
        after)
    (call-interactively 'ispell-word)
    (setq after (downcase (or (thing-at-point 'word) "")))
    (unless (string= after before)
      (define-abbrev
        (if p local-abbrev-table global-abbrev-table) before after))
      (message "\"%s\" now expands to \"%s\" %sally."
               before after (if p "loc" "glob"))))

(define-key ctl-x-map (kbd "C-i") 'ispell-word-then-abbrev)
(setq save-abbrevs t)
(setq-default abbrev-mode t)

ด้วยสิ่งนี้คุณสามารถทำได้ง่ายๆ

  1. ตีC-x C-iหลังจากคำที่สะกดผิด
  2. เลือกการแก้ไขและ
  3. ไม่ต้องกังวลอีกเลย

เพราะนับจากนี้ไป Emacs จะแทนที่คำที่สะกดผิดของคำโดยอัตโนมัติด้วยการแก้ไข มันยากที่จะพูดออกมาว่ามันมีประโยชน์แค่ไหน!


หากคุณต้องการที่จะใส่มากเกินไป Emacs' ความสามารถในการแก้ไขอัตโนมัติพบใหม่คุณสามารถเพิ่ม abbrevs ที่กำหนดไว้ที่นี่ที่คุณabbrev_defsไฟล์

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