क्या “स्पेस” पर स्वतः-सही वर्तनी संभव है?


10

मैं सवाल पोस्ट करने वाला था, लेकिन फिर मैंने ऑटो-सही संभावनाओं की खोज करते हुए इसे स्टैक ओवरफ्लो पर देखा । लिंक किए गए प्रश्न का कोई जवाब नहीं है, इसलिए मैंने सोचा कि इस साइट पर अधिक भाग्य होगा। यहाँ पाठ है:

काश कोई ऐसा तरीका होता, ताकि जब मैं किसी शब्द को गलत समझूं, तो फ्लाईस्पेल उसे "सबसे अधिक संभावना" सुधार के लिए स्वतः पूर्ण कर सके। जब मैं किसी शब्द को गलत करता हूं और फिर इसे सही करने के लिए OPTION-TAB को हिट करता हूं, तो फ्लाईस्पेल ALMOST ALWAYS मुख्य सुझाव के रूप में डिफ़ॉल्ट रूप से सही सुधार करता है।

हालाँकि, मैं चाहता हूँ कि फ्लाईस्पेल हर शब्द के साथ ऐसा करे, जो कि बिना किसी विकल्प के मेरे हिट होने के कारण है। बस स्पैस बार को मारने और अगले शब्द पर जाने से।

क्या यह संभव है?

तो मूल रूप से मोबाइल फोन पर ऑटो-सही जैसा कुछ है। इस तरह की सुविधा के लिए jabberऔर captureमें जैसे मोड के लिए उपयोगी होगाorg-mode


संपादित करें :

मैं इस सुविधा को डिफ़ॉल्ट फ्लाई-स्पेल कार्यक्षमता को अधिलेखित करने की तुलना में एक अलग मामूली मोड के रूप में चाहता हूं। जरूरत पड़ने पर यह फ्लाई-स्पेल के अलावा या इसके अलावा सक्रिय हो सकता है


1
मुझे यकीन है कि यह संभव है (और शायद हैक करना मुश्किल नहीं है), लेकिन मैं यह कहने के लिए बाध्य हूं कि आईएमएचओ एक बहुत बुरा विचार होगा।
mbork

1
@mbork यह देखना एक बुरा विचार होगा कि फ्लाई-स्पेल कैसे काम करता है, लेकिन एक अतिरिक्त मामूली मोड के साथ क्या गलत है जिसे सक्रिय किया जा सकता है / माँग पर निष्क्रिय किया जा सकता है?
तैमूर

मैं अपने फोन पर इसी तरह की सुविधा से लगातार परेशान हूं। मुझे ऐसी मशीनें पसंद नहीं हैं जो यह कहती हैं कि वे मुझसे ज्यादा स्मार्ट हैं, खासकर कि वे नहीं; ;-): वे शब्दावली बहुत सीमित हैं, खासकर यह कि मैं कभी-कभी गैर-शब्द (कुछ उचित संज्ञाओं की तरह) लिखना चाहती हूं ।
mbork

@mbork True, लेकिन इसके फायदे भी हैं, जैसे हर टाइपिंग के बारे में चिंता न करना '। मैं एक जर्मन कीबोर्ड का उपयोग करता हूं , और मेरी पिंकियों को हर बार स्प्लिट करना पड़ता है जब मैं उस कुंजी के लिए पहुंचता हूं
Tymric

1
@mbork "non_words" समस्या को हल करने के लिए, क्या हम शायद S-SPC"छुट्टी-उस-शब्द-अकेले" से बंध सकते हैं?
तैमूर

जवाबों:


6

इस पर आपको मेरी पोस्ट का संदर्भ दें ।


मैंने पाया है कि abbrevs पर सुधार करने का सबसे अच्छा तरीका है SPC, आपको केवल उन सुधारों को परिभाषित करने की आवश्यकता है जो आप चाहते हैं। उसके लिए, मैं निम्नलिखित दृष्टिकोण अपनाता हूं:

  1. अपनी init फ़ाइल के नीचे कोड जोड़ें।
  2. जब भी आप कुछ गलत टाइप करते हैं, हिट करते हैं C-x C-iऔर पेशकश किए गए सुधारों में से एक को चुनते हैं।
  3. बस! सुधार को स्वचालित रूप से वहां बदल दिया जाएगा, और अब से यह गलती करने पर हर बार स्वचालित रूप से प्रदर्शन किया जाएगा।

यहाँ कोड है

(define-key ctl-x-map "\C-i" 'endless/ispell-word-then-abbrev)

(defun endless/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 ((bef (downcase (or (thing-at-point 'word) ""))) aft)
    (call-interactively 'ispell-word)
    (setq aft (downcase (or (thing-at-point 'word) "")))
    (unless (string= aft bef)
      (message "\"%s\" now expands to \"%s\" %sally"
               bef aft (if p "loc" "glob"))
      (define-abbrev
        (if p local-abbrev-table global-abbrev-table)
        bef aft))))

(setq save-abbrevs t)
(setq-default abbrev-mode t)

मैन्युअल रूप से, सुधार जोड़ने से बोझिल लग सकता है, लेकिन यह वास्तव में नहीं है। आप बस कुछ कुँजी मार रहे हैं, और आप ध्यान देंगे कुछ सुधार आपको एक लंबा रास्ता तय करेंगे।

इसके अलावा, विकल्प (ispell आपके लिए हर बार शब्द मौजूद नहीं होने पर सुधार का चयन करता है) आपको गलत सुधारों को अधिक बार नहीं मिलेगा। तो यह अपने आप को परिभाषित करने के लिए सबसे अच्छा है। यह तब भी समस्या को हल करता है जब आप वास्तव में गैर-शब्द लिखना चाहते हैं


मैंने उपयोग dontकरने के लिए एक प्रतिस्थापन जोड़ने की कोशिश की, लेकिन इसने इसके बजाय पत्र जोड़ा ( )। मुझे नहीं लगता कि यह एपोस्ट्रोफ को अच्छी तरह से संभालता है। क्या इसके लिए कोई फिक्स है? don'tC-x C-i 1t"dont" now expands to "t" globally
Tymric

@ टिम्मी एक प्रोग्रामिंग मोड में है? पाठ-मोड में जो मेरे लिए नहीं होता है।
मालाबार

मैंने इसे एक जैबर वार्तालाप में आज़माया, लेकिन आपकी टिप्पणी के बाद मैंने इसे टेक्स्ट-मोड में परीक्षण किया और इसने विश्व स्तर पर काम किया। धन्यवाद
Tymric

2

यहाँ एक सरल प्रयास है:

(defun my-flyspell-correct-on-space ()
  (interactive)
  (when flyspell-mode
    (flyspell-auto-correct-word))
  (self-insert-command 1))
(local-set-key " " 'my-flyspell-correct-on-space)

जब आप एक पंक्ति में एक से अधिक स्थान सम्मिलित करते हैं, तो यह अजीब तरह से व्यवहार करता है, और कभी-कभी यह शब्द के सही होने के हिस्से को विभाजित करता है। इस प्रकार यह पद सामुदायिक विकि है; इसे सुधारने के लिए स्वतंत्र महसूस करें।


6
मैं केवल अंतरिक्ष कुंजी को अकेला छोड़ दूंगा, और इसके बजाय post-self-insert-hookरिक्त स्थान की प्रविष्टि को ट्रैक करने और तदनुसार कार्य करने के लिए उपयोग करूंगा । यह सुरक्षित और अधिक कुशल है।
चंद्रग्रहण

1

ऑटोकॉरेक्ट और @ लेगोशिया के उत्तर के बारे में एक और प्रश्न से प्रेरित उत्तर । यहाँ एक त्वरित मामूली मोड है, जिसका उपयोग करके मक्खी को स्वतः ठीक किया जाएगा flyspell। यह वास्तव में, "वैश्विक" है, जिसमें यह सलाह देता है self-insert-command, लेकिन केवल उन बफ़र्स में आग लगती है जो flyspell-modeचालू हो गए हैं।

(defun flyspell-ac-word (&optional arg)
  "Autocorrect a word when entering a non-word character."
  (when flyspell-mode
    (unless (eq ?w (char-syntax (string-to-char (this-command-keys))))
      (when (or (bobp)
                (eq ?w (char-syntax (char-before))))
        (flyspell-auto-correct-word)))))

(define-minor-mode flyspell-autocorrect-mode
  "Toggle `flyspell-autocorrect-mode'.  Fires flyspell on a
just-completed word.  Only operates when `flyspell-mode' is on."
  :init-value nil
  :lighter (" AC")
  (if flyspell-autocorrect-mode
      (progn 
        (require 'flyspell)
        (advice-add #'self-insert-command :before #'flyspell-ac-word))
    (advice-remove #'self-insert-command #'flyspell-ac-word)))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.