আগের শব্দটি দক্ষতার সাথে সংশোধন করতে ফ্লাইস্পেল কীভাবে ব্যবহার করবেন?


18

আমি ফ্লাইস্পেল ব্যবহার করা শুরু করার মুহুর্ত থেকে এটি ব্যবহার করা সর্বদা বেদনাদায়ক। আমি খুব কমই ভুল বানানযুক্ত শব্দের জন্য পুরো বাফারটি চেক করি, সাধারণত আমি টাইপ করি এবং একবার আমি আন্ডারলাইন করা শব্দটি দেখতে পেয়ে আমি তাত্ক্ষণিকভাবে এটি সংশোধন করতে এবং টাইপ করা চালিয়ে যেতে চাই। এটি কেবল কারণ আমি পরে শব্দটি সংশোধন করতে ভুলে যেতে ভয় করি এবং কারণ যখন আমি বাফারের ব্যাপক চেকিং শুরু করি, আইস্পেল অনেকগুলি মিথ্যা ধনাত্মক ধন দেয়। সুতরাং, প্রায়শই আমি টাইপ করার সময় যত তাড়াতাড়ি সম্ভব শব্দগুলি সংশোধন করি।

এখানে অন্তর্নির্মিত ফাংশনগুলি আমি জানি এবং সেগুলি কেন কার্যকর নয় তার কারণগুলি (আমার জন্য):

  • flyspell-correct-word- এটি মাউস ক্লিকে আবদ্ধ। ভুলে যাও, আমি মাউস ব্যবহার করতে যাচ্ছি না।

  • flyspell-correct-word-before-point- আমি এটি কিছু সময়ের জন্য ব্যবহার করেছি। এর দুটি ডাউনসাইড রয়েছে:

    1. ডিফল্টরূপে এটি জিইউআই মেনুটি দেখায় যা মাউস ছাড়াই পরিচালনা করা কঠিন এবং আপনি যখন 10 টিরও বেশি আইটেমের সাথে সংশোধনের তালিকা পাবেন তখন এটি সত্যই জটিল।

    2. এটা তোলে শব্দের জন্য কাজ করে না দীর্ঘ বিন্দু আগে। আমি দ্রুত টাইপ করি এবং যখন আমি ভুল বানানযুক্ত শব্দটি স্পষ্ট করি তখন আমার সাধারণত ভুল বানানযুক্ত শব্দ এবং বিন্দুর মধ্যে একটি বা দুটি শব্দ থাকে। আমাকে পয়েন্ট সরানো দরকার, সঠিক শব্দটি বলতে হবে, ফিরে যেতে হবে। উহু.

  • flyspell-auto-correct-word - পয়েন্ট 2 See দেখুন আপনার দীর্ঘায়নের দীর্ঘ তালিকা (সাইক্লিংয়ের কারণে) থাকলে এটি ভাল কাজ করে না।

প্রশ্ন: কীভাবে কী-বোর্ডের সাহায্যে, সাইক্লিং ছাড়াই পরিপূর্ণতার তালিকা থেকে বেছে নিতে এবং আরও বেশি বা কম দূরবর্তী শব্দগুলিকে সংশোধন করার ক্ষমতা সহ আমি কীভাবে ফ্লাইস্পেলকে দক্ষতার সাথে ব্যবহার করতে পারি?

গ্রহণযোগ্য উত্তরের মধ্যে এমন প্যাকেজ অন্তর্ভুক্ত রয়েছে যা পূর্বের ভুল বানান শব্দের নেভিগেট করতে সহায়তা করে, এটি সংশোধন করে ফিরে আসুন বা এরকম কিছু পাশাপাশি ছোট্ট স্নিপেট সম্ভবত আপনার নিজের কনফিগারেশন ফাইল থেকে, কারণ আমি বিশ্বাস করি যে অন্য ব্যক্তিরা ফ্লাইস্পেলের সাথে দক্ষতার সাথে যোগাযোগের জন্য তাদের উপায়গুলি আবিষ্কার করেছিলেন।

উত্তর:


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আমার ক্ষেত্রে) টিপুন keep

[আমার বানান পরীক্ষা কনফিগার করুন]


1
আমি দেখতে পাচ্ছি যে সমস্ত সম্ভাব্য সংশোধন থাকলেও আপনাকে এখনও চক্রের প্রয়োজন to ttwoউদাহরণস্বরূপ এটি ব্যবহার করে দেখুন , যদিও আমার মেনুতে আমি প্রস্তাবিত 26 টি সংশোধন করছি!
মার্ক কার্পভ

3
ttwotwoপ্রথম চেষ্টাতে স্বয়ংক্রিয়ভাবে সংশোধন করা হয়েছে। তবে আমি জানি আপনি কি বলতে চাইছেন। ব্যবহারিক অভিজ্ঞতা থেকে, প্রায় 90% ক্ষেত্রে, প্রথম প্রয়াসটি সঠিক শব্দ পায়, সম্ভবত বাকি 9% এর জন্য 2-3 টি প্রয়োজন হয় এবং শেষ 1% হয় যখন ফ্লাইস্পেলটি ঠিক এটি খুঁজে না পায় এবং আমার যেতে হবে 5+ টির মাধ্যমে (বা আমি নিজে এটি ঠিক করেছি)।
কুশল মোদী

আমি দেখছি, আপনার পদ্ধতির নিজস্ব উপকারিতা রয়েছে (সরলতা)। সম্ভবত আমি এটি পরে স্যুইচ করব।
মার্ক কার্পভ

2
খুব সুন্দর - এটি আমি প্রত্যাশা করেছিলাম এবং এটি মিস করেছি কারণ আমি অন্য কোনও কিছুর সাথে ডিফল্ট কীটি আবদ্ধ করছিলাম। এটি C-;ডিফল্টরূপে আবদ্ধ এবং আপনি flyspell-auto-correct-bindingফ্লাইস্পেল মানচিত্রে অন্য কীতে আবদ্ধ করতে কাস্টমাইজ করতে পারেন । (বা কেবল এটিকে অবশ্যই স্বাভাবিকভাবে বাঁধাই করুন))
গ্লুকাস

6

আমি নিশ্চিত যে অন্যান্য ব্যক্তিরা বিভিন্ন সমাধান নিয়ে আসবেন যা ভবিষ্যতের পাঠকদের জন্য দরকারী। যাইহোক, এখানে আমি বর্তমানে এটি পরিচালনা করি handle

আমি মনে করি flyspell-correct-word-before-pointশুরু করার জন্য একটি ভাল জায়গা, কারণ এটি কমপক্ষে কী টিপে সাহায্য করতে পারে এবং এটি সম্ভাব্য সংশোধনের মেনু প্রদর্শন করে। মেনু ঠিক করতে আমি প্যাকেজ এস পপআপ মেনু লিখেছি যা অভিকে ব্যাকএন্ড হিসাবে ব্যবহার করে । এটি জিইউআই পপআপ মেনু প্রতিস্থাপন করে যা 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"))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.