Emac'lerde yazım denetimi yapmak için hangi seçenekler var?


19

Şu anda Emacs'ta birçok programlama dışı görev yaptığım için, yazım denetimi bir kez daha büyük endişelerimden biri haline geldi.

Emacs'ta yazım denetimi seçenekleri ile ilgili herhangi bir soru olmadığını fark ettim, işte buradayız:

Emacs'ta yazım denetimi yapma seçeneklerim nelerdir?

özellikle,

  • genel amaçlı yazım denetimi için, yani yazım hataları için mantıklı öneriler, kelimelerin yazım düzeltmesi
  • seçici yazım denetimi için, örneğin genel amaçlı yazım denetimi, ancak yalnızca yorumlarda
  • unuttuğum ya da bilmediğim bir şey için düşünebilirsin (yazım denetimi ile ilgili, duh ...)

Düzenleme: Ayrı bir soru "diğer" şeyler kapalı çatallı , emacs daha iyi metinler yazmak için hangi seçenekler vardır


1
Bu sayfayı tavsiye et: Emacs
Luke

1
Haliyle bu soru çok geniştir . İkinci mermi noktasıyla (yazım denetimini seçerek) kısıtlamanızı ve belki de dilbilgisini ayrı ayrı sormanızı öneririm.
Gilles 'SO- kötü olmayı bırak'

Yalnızca ilk iki öğeniz yazım denetimi ile ilgilidir. Dilbilgisi ve dil yazım denetimi değildir ve son üç öğeniz tamamen farklı bir soru soracaktır.
Malabarba

1
Orijinal sorunun çok geniş veya çok farklı iki sorudan oluştuğunu gerçekten kabul etmeme rağmen, ikinci kısmı çatalladım. Bu soru şimdi sadece yazım denetimi, diğeri dilbilgisi denetimi ve daha iyi metinler yazmayla ilgili.
elemakil

Yanıtlar:


10
  • Genel amaçlı yazım denetimi için, birkaç popüler alternatif var
    1. ispellve arkadaşlar: Emacs yerleşik ve genellikle ile çağrılır ispell-buffer. Yalnızca talep üzerine yazım denetimi yapar.
    2. flyspell-mode: Ayrıca yerleşik ve anında yazım denetimi sağlar ve hataları vurgular.
    3. speck-mode: MELPA'dan edinilebilir, yazdıktan sonra durakladıktan sonra sözcüğün yazımını denetler. Ayrıca, aynı arabellekte birden fazla sözlük kullanabilmek gibi sineklik modundan birkaç ayırt edici özelliğe sahiptir. (Feragatname: Bu modu sadece kısa bir süre önce kullandım)

Yukarıdakilerin hepsinin, aspellveya hunspelluygun sözlükler gibi özel yazım denetimi programları gerektirdiğini unutmayın . Modlar, komut satırı programlarına yalnızca uygun bir emacs arabirimi sağlar.

  • Seçmeli yazım denetimi için, hangi kelimelerin kontrol edilmesi gerektiğini seçen bir işlevi kablolayarak flyspell-modedeğişkenle özelleştirebilirsiniz flyspell-generic-check-word-predicate. Listelenen örneğiniz olsa da kolaydır - Sadece flyspell-prog-modekod arabelleklerindeki yorumları kontrol edenleri kullanın.

1
Öncelikle cevabınız için teşekkür edeyim. Gilles ve Malabarba'nın yorumlarının ardından soruyu iki bölüme ayırdım. Bu nedenle, cevabınızın ikinci kısmını (ilgili olanı weasel-word) yeni soruya cevap olarak göndermenizi öneririm . Bağlantıyı orijinal sorumda bulabilirsiniz.
elemakil

Lütfen wchecklistenize ekleyin . flyspellSon zamanlarda çok iyi olmasına rağmen wcheckartık kullanmıyorum çok iyi .
rasmus

OSX için, Emams'ın Aquamacs adlı son derece özelleştirilmiş sürümü, yerel OSX yazım denetleyicisi için yerleşik bir desteğe sahiptir (kullanıcı tarafından eklenen kelimelerin eşlik eden OSX kullanıcı sözlüğü dahil). Bu, başka hiçbir Emacs sürümünün sunamayacağı özel bir öğedir.
hukukçu

6

@ Vamsi'nin cevabı zaten genel amaçlı ve seçici yazım denetimini kapsıyor. Peki ya kişiselleştirilmiş otomatik düzeltme ? @Malabarba blogunda bu konuyla ilgili güzel bir yazı yayınladı . Temel fikir, yanlış yazılmış sözcük çiftlerini ve uygun düzeltmeleri Abbrevs olarak saklamaktır . İşte bunu kolayca yapmanızı sağlayan kodun (biraz değiştirilmiş bir sürümü):

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

Bu yerdeyken,

  1. C-x C-iyanlış yazılmış bir kelimeden sonra vurmak
  2. bir düzeltme seçin ve
  3. bir daha asla endişelenme

çünkü bundan sonra Emacs otomatik olarak kelimenin yanlış yazılmış sürümünü düzeltmeyle değiştirecek. Bunun ne kadar yararlı olduğunu kelimelere dökmek zor!


Eğer Emacs' yeni keşfedilmiş otomatik düzeltme yetenekleri güçlendirmek istiyorsanız varsa, tanımlanmış abbrevs ekleyebilir burada sizin için abbrev_defsdosyanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.