पिछले शब्द को कुशलतापूर्वक ठीक करने के लिए फ्लाईस्पेल का उपयोग कैसे करें?


18

उस समय से जब मैंने फ्लाईस्पेल का उपयोग करना शुरू किया, यह हमेशा उपयोग करने के लिए दर्दनाक था। मैं शायद ही कभी गलत शब्दों के लिए पूरे बफर की जांच करता हूं, आमतौर पर मैं टाइप करता हूं और एक बार जब मैं रेखांकित शब्द देखता हूं तो मैं इसे तुरंत ठीक करना चाहता हूं और टाइप करना जारी रखता हूं। यह केवल इसलिए है क्योंकि मुझे बाद में शब्द को सही करने के लिए भूल जाने का डर है और क्योंकि जब मैं बफर की व्यापक जांच शुरू करता हूं, तो आईस्पेल बहुत सारे गलत सकारात्मक देता है। इसलिए, लगभग हमेशा मैं टाइप करते समय शब्दों को सही करता हूं।

यहाँ उन कार्यों के बारे में बताया गया है जिनके बारे में मुझे पता है कि वे (मेरे लिए) कुशल क्यों नहीं हैं:

  • flyspell-correct-word- यह माउस क्लिक के लिए बाध्य है। इसे भूल जाओ, मैं माउस का उपयोग नहीं करने जा रहा हूं।

  • flyspell-correct-word-before-point- मैंने इसे कुछ समय के लिए इस्तेमाल किया। इसके दो डाउनसाइड हैं:

    1. डिफ़ॉल्ट रूप से यह GUI मेनू दिखाता है जो माउस के बिना काम करना मुश्किल है और 10 से अधिक वस्तुओं के साथ सुधार की सूची होने पर यह वास्तव में बोझिल है।

    2. यह शब्द के लिए काम नहीं करता है लंबे समय तक बात करने से पहले। मैं तेजी से टाइप करता हूं और जब मैं गलत वर्तनी वाला शब्द पाता हूं तो आमतौर पर गलत वर्तनी वाले शब्द और बिंदु के बीच एक या दो शब्द होते हैं। मुझे बिंदु, सही शब्द, वापस लौटने की आवश्यकता है। ओह।

  • flyspell-auto-correct-word - बिंदु 2 देखें it इसके अलावा जब आपके पास पूर्णताओं की लंबी सूची (साइकिल चलाने के कारण) अच्छी तरह से काम नहीं करती है।

प्रश्न: मैं कीबोर्ड के साथ कुशलता से फ्लाईस्पेल का उपयोग कैसे कर सकता हूं, साइकिल के बिना पूर्णता की सूची में से चयन करने में सक्षम होने के साथ, और अधिक या कम दूर के शब्दों को सही करने की क्षमता के साथ?

स्वीकार्य उत्तरों में ऐसे पैकेज शामिल हैं जो पिछले गलत वर्तनी वाले शब्द पर नेविगेट करने में मदद करते हैं, इसे ठीक करते हैं और वापस प्राप्त करते हैं या ऐसा कुछ और साथ ही छोटे स्निपेट, संभवतः आपके स्वयं के कॉन्फ़िगरेशन फ़ाइल से, क्योंकि मेरा मानना ​​है कि अन्य लोगों ने फ्लाईस्पेल के साथ कुशलता से बातचीत करने के लिए अपने तरीके का पता लगाया।

जवाबों:


14

इनबिल्ट flyspell-auto-correct-previous-wordमेरे लिए एक आकर्षण की तरह काम करता है। मैंने इसे बाध्य किया है F12और मैंने पीछे मुड़कर नहीं देखा। मेरे लिए लगातार सही शब्द हैं, इससे कोई फर्क नहीं पड़ता कि गलत शब्द वापस कितने शब्द थे।

फ़ंक्शन दस्तावेज़ से:

flyspell-auto-correct-previous-word is an interactive compiled Lisp
function in `flyspell.el'.

(flyspell-auto-correct-previous-word POSITION)

For more information check the manuals.

Auto correct the first misspelled word that occurs before point.
But don't look beyond what's visible on the screen.

इसके अलावा, अगर पहली बार ऑटोकरेक्ट ने आपको सही शब्द नहीं दिया, तो F12सभी विकल्पों के माध्यम से चक्र करने के लिए अपनी बाध्य कुंजी ( मेरे मामले में) को दबाए रखें ।

[मेरा वर्तनी जाँच विन्यास]


1
मुझे लगता है कि आपको अभी भी चक्र करने की आवश्यकता है, हालांकि सभी संभावित सुधार। ttwoउदाहरण के लिए इस पर प्रयास करें , हालांकि मेरे मेनू में मुझे 26 प्रस्तावित सुधार दिखाई दे रहे हैं!
मार्क कार्पोव

3
ttwotwoपहली कोशिश में ऑटो-सही । लेकिन मुझे पता है कि आपका मतलब क्या है। व्यावहारिक अनुभव से, लगभग 90% मामलों में, पहले प्रयास को सही शब्द मिलता है, संभवतः शेष 9% को 2-3 कोशिशों की आवश्यकता होती है और अंतिम 1% तब होता है जब फ्लाईस्पेल बस इसका पता नहीं लगाता है और मुझे जाने की आवश्यकता होती है के माध्यम से 5 + कोशिश करता है (या मैं मैन्युअल रूप से इसे ठीक)।
कौशल मोदी

मैं देखता हूं, आपकी विधि के अपने लाभ (सरलता) हैं। हो सकता है कि मैं इसे बाद में बदल दूं।
मार्क करपोव

2
बहुत अच्छा - यह वही है जो मैंने खोजने की उम्मीद की थी, और इसे याद किया क्योंकि मैं डिफ़ॉल्ट कुंजी को किसी और चीज से बांध रहा था। यह C-;डिफ़ॉल्ट रूप से बाध्य है , और आप flyspell-auto-correct-bindingइसे फ्लाईस्पेल मैप में किसी अन्य कुंजी से बांधने के लिए अनुकूलित कर सकते हैं । (या बस इसे सामान्य तरीके से बांधें, निश्चित रूप से।)
ग्लूकास

6

मुझे पूरा यकीन है कि अन्य लोग विभिन्न समाधानों के साथ आएंगे जो भविष्य के पाठकों के लिए उपयोगी होंगे। हालांकि, यहां बताया गया है कि मैं वर्तमान में इसे कैसे संभालता हूं।

मुझे लगता flyspell-correct-word-before-pointहै कि शुरू करने के लिए एक अच्छी जगह है, क्योंकि यह कम से कम कुंजी दबाने के साथ मंगाया जा सकता है और यह संभावित सुधारों का मेनू प्रदर्शित करता है। मेनू को ठीक करने के लिए मैंने पैकेज ऐस पॉपअप मेनू लिखा है जो एवी बैकएंड के रूप में उपयोग करता है । यह GUI पॉपअप मेनू का flyspell-correct-word-before-pointउपयोग करता है जो x-popup-menuटेक्स्ट पॉपअप मेनू के साथ उपयोग करता है (फ़ंक्शन को कहा जाता है ) जो लेबल किए गए मेनू आइटम प्रस्तुत करता है: एक या दो कुंजी स्ट्रोक और आपका काम हो गया।

दूसरी समस्या को हल करने के लिए ("दूरी पर शब्दों को सही करने में असमर्थता") मैंने यह सहायक लिखा है:

(defun flyspell-correct-previous (&optional words)
  "Correct word before point, reach distant words.

WORDS words at maximum are traversed backward until misspelled
word is found.  If it's not found, give up.  If argument WORDS is
not specified, traverse 12 words by default.

Return T if misspelled word is found and NIL otherwise.  Never
move point."
  (interactive "P")
  (let* ((Δ (- (point-max) (point)))
         (counter (string-to-number (or words "12")))
         (result
          (catch 'result
            (while (>= counter 0)
              (when (cl-some #'flyspell-overlay-p
                             (overlays-at (point)))
                (flyspell-correct-word-before-point)
                (throw 'result t))
              (backward-word 1)
              (setq counter (1- counter))
              nil))))
    (goto-char (- (point-max) Δ))
    result))

यह काम करने लगता है।


5

साथ पतवार-flyspell आप कुशलता से सुधार की सूची में से चुन सकते हैं। मैं त्रुटियों के लिए कूदने और उन्हें ठीक करने के लिए निम्न कोड का उपयोग करता हूं, यह बिंदु की स्थिति को बचाता है mark-ringताकि आप उस स्थिति में वापस कूद सकें जहां आपने शुरुआत की थी या पहले शब्दों को ठीक किया था:

(defun flyspell-goto-previous-error (arg)
  "Go to arg previous spelling error."
  (interactive "p")
  (while (not (= 0 arg))
    (let ((pos (point))
          (min (point-min)))
      (if (and (eq (current-buffer) flyspell-old-buffer-error)
               (eq pos flyspell-old-pos-error))
          (progn
            (if (= flyspell-old-pos-error min)
                ;; goto beginning of buffer
                (progn
                  (message "Restarting from end of buffer")
                  (goto-char (point-max)))
              (backward-word 1))
            (setq pos (point))))
      ;; seek the next error
      (while (and (> pos min)
                  (let ((ovs (overlays-at pos))
                        (r '()))
                    (while (and (not r) (consp ovs))
                      (if (flyspell-overlay-p (car ovs))
                          (setq r t)
                        (setq ovs (cdr ovs))))
                    (not r)))
        (backward-word 1)
        (setq pos (point)))
      ;; save the current location for next invocation
      (setq arg (1- arg))
      (setq flyspell-old-pos-error pos)
      (setq flyspell-old-buffer-error (current-buffer))
      (goto-char pos)
      (if (= pos min)
          (progn
            (message "No more miss-spelled word!")
            (setq arg 0))))))


(defun check-previous-spelling-error ()
  "Jump to previous spelling error and correct it"
  (interactive)
  (push-mark-no-activate)
  (flyspell-goto-previous-error 1)
  (call-interactively 'helm-flyspell-correct))

(defun check-next-spelling-error ()
  "Jump to next spelling error and correct it"
  (interactive)
  (push-mark-no-activate)
  (flyspell-goto-next-error)
  (call-interactively 'helm-flyspell-correct))

(defun push-mark-no-activate ()
  "Pushes `point' to `mark-ring' and does not activate the region
 Equivalent to \\[set-mark-command] when \\[transient-mark-mode] is disabled"
  (interactive)
  (push-mark (point) t nil)
  (message "Pushed mark to ring"))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.