Có những lựa chọn nào để thực hiện kiểm tra chính tả trong emacs


19

Bởi vì tôi hiện đang thực hiện rất nhiều nhiệm vụ phi lập trình trong Emacs, kiểm tra chính tả trở thành một trong những mối quan tâm lớn của tôi một lần nữa.

Tôi nhận thấy rằng không có câu hỏi nào liên quan đến các tùy chọn kiểm tra chính tả trong Emacs, vì vậy chúng tôi đi đây:

Lựa chọn của tôi để kiểm tra chính tả trong Emacs là gì?

Đặc biệt,

  • để kiểm tra chính tả cho mục đích chung, nghĩa là những gợi ý hợp lý cho lỗi chính tả, sửa lỗi chính tả của từ
  • để kiểm tra chính tả có chọn lọc, ví dụ: kiểm tra chính tả mục đích chung nhưng chỉ trong nhận xét
  • cho bất cứ điều gì tôi quên hoặc không biết nhưng bạn có thể nghĩ đến (liên quan đến kiểm tra chính tả, duh ...)

Chỉnh sửa: Bỏ các nội dung "khác" trong một câu hỏi riêng biệt, Có những tùy chọn nào để viết văn bản tốt hơn trong emacs


1
Tôi đề nghị trang này: Chính tả trong Emacs
Luke

1
Vì nó đứng câu hỏi này là quá rộng . Tôi đề nghị hạn chế nó đến điểm đạn thứ hai (chọn kiểm tra chính tả) và có thể hỏi riêng về ngữ pháp.
Gilles 'SO- ngừng trở nên xấu xa'

Chỉ có hai mục đầu tiên của bạn là về kiểm tra chính tả. Ngữ pháp và ngôn ngữ không phải là kiểm tra chính tả, và ba mục cuối cùng của bạn sẽ tạo ra một câu hỏi hoàn toàn khác nhau.
Malabarba

1
Mặc dù tôi không thực sự đồng ý rằng câu hỏi ban đầu quá rộng hoặc bao gồm hai câu hỏi rất khác nhau, tôi đã rẽ nhánh phần thứ hai. Câu hỏi này bây giờ chỉ là về kiểm tra chính tả, câu hỏi còn lại về kiểm tra ngữ pháp và viết các văn bản tốt hơn.
elemakil

Câu trả lời:


10
  • Để kiểm tra chính tả cho mục đích chung, có khá nhiều lựa chọn thay thế phổ biến
    1. ispellvà bạn bè: Được xây dựng thành emacs & thường được gọi với ispell-buffer. Kiểm tra chính tả chỉ theo yêu cầu.
    2. flyspell-mode: Cũng được tích hợp và cung cấp kiểm tra chính tả nhanh chóng và làm nổi bật các lỗi.
    3. speck-mode: Có sẵn từ MELPA, nó kiểm tra chính tả của từ khi bạn tạm dừng sau khi nhập. Cũng có một vài tính năng phân biệt với chế độ flyspell như có thể sử dụng nhiều từ điển trong cùng một bộ đệm. (Tuyên bố miễn trừ trách nhiệm: Tôi chỉ sử dụng chế độ này trong một thời gian ngắn trở lại)

Lưu ý rằng tất cả các yêu cầu trên yêu cầu các chương trình kiểm tra chính tả chuyên dụng như aspellhoặc hunspelltừ điển thích hợp. Các chế độ chỉ cung cấp giao diện emacs thuận tiện cho các chương trình dòng lệnh.

  • Để kiểm tra chính tả có chọn lọc, bạn có thể tùy chỉnh flyspell-modevới biến flyspell-generic-check-word-predicatebằng cách nối một hàm chọn từ nào phải kiểm tra. Ví dụ được liệt kê của bạn rất dễ dàng - Chỉ cần sử dụng flyspell-prog-modemà chỉ kiểm tra nhận xét trong bộ đệm mã.

1
Đầu tiên, hãy để tôi cảm ơn bạn cho câu trả lời của bạn. Sau những bình luận của Gilles và Malabarba, tôi đã chia câu hỏi thành hai phần. Do đó, tôi khuyên bạn nên đăng phần thứ hai của câu trả lời của mình (phần về weasel-word) như một câu trả lời cho câu hỏi mới. Bạn có thể tìm thấy các liên kết trong câu hỏi ban đầu của tôi.
elemakil

Vui lòng thêm wcheckvào danh sách của bạn. Nó rất tốt, mặc dù flyspellgần đây đã trở nên rất tốt, mà tôi không sử dụng wchecknữa.
rasmus

Đối với OSX, phiên bản Emacs tùy biến cao có tên Aquamacs đã tích hợp hỗ trợ cho trình kiểm tra chính tả OSX gốc (bao gồm từ điển người dùng OSX đi kèm với các từ đã được người dùng thêm vào). Đó là một mặt hàng đặc biệt mà không có phiên bản Emacs nào có thể cung cấp.
luật

6

Câu trả lời của @ Vamsi đã bao gồm mục đích kiểm tra chính tả và mục đích chung. Nhưng những gì về tự động điều chỉnh cá nhân ? @Malabarba có một bài viết hay về chủ đề này trên blog của mình . Ý tưởng cơ bản là lưu trữ các cặp từ sai chính tả và sửa lỗi thích hợp dưới dạng Viết tắt . Đây là (một phiên bản sửa đổi một chút) mã cho phép bạn thực hiện điều này một cách dễ dàng:

(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)

Với điều này tại chỗ, bạn có thể chỉ cần

  1. đánh C-x C-isau một từ sai chính tả
  2. chọn một sự điều chỉnh và
  3. không bao giờ lo lắng về nó một lần nữa

bởi vì từ giờ trở đi Emacs sẽ tự động thay thế phiên bản sai chính tả của từ bằng cách sửa. Thật khó để diễn tả bằng lời này hữu ích như thế nào!


Nếu bạn muốn nâng cao khả năng tự động sửa lỗi mới được tìm thấy của Emacs, bạn có thể thêm các chữ viết tắt được xác định ở đây vào abbrev_defstệp của mình .

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.