সর্বশেষ পাঠ্য সন্নিবেশ পুনরাবৃত্তি


10

ভিমে আপনি .পাঠ্য সন্নিবেশ সহ সর্বশেষ পরিবর্তনের পুনরাবৃত্তি করতে টিপতে পারেন ।

ইমাসে থাকা অবস্থায় C-x zকেবল সর্বশেষ আদেশটি পুনরাবৃত্তি করে। আমি সচেতন যে ম্যাক্রোগুলি এখানে ব্যবহার করা যেতে পারে, তবে প্রায়শই আমি বুঝতে পারি যে আমাকে একই পাঠ্যটি খুব দেরীতে পুনরায় সন্নিবেশ করা দরকার। যখন আমি এটি আরও একটিবার পুনরায় সন্নিবেশ করানোর দরকার পরে ম্যাক্রো সংজ্ঞায়িত করা অর্থহীন।

প্রশ্ন: ইমাকসের অভ্যন্তরে পাঠ্য সন্নিবেশ পুনরাবৃত্তি করার কোনও উপায় আছে?


1
আপনি যে "পাঠ্য" পুনরাবৃত্তি করতে চান? প্রযুক্তিগতভাবে বলতে গেলে, শেষ সন্নিবেশটি কেবল সর্বশেষ চরিত্র, যা সম্ভবত আপনি যা করছেন তা নয়। সুতরাং, আপনি কীভাবে আপনার উদ্দেশ্যে "পাঠ্য সন্নিবেশ" সংজ্ঞায়িত করবেন? এটি পরিষ্কার করা আপনাকে এটি অর্জনের উপায়গুলি খুঁজতে সহায়তা করতে পারে।
টি। ভেরন

হুম ভাল প্রশ্ন - কীভাবে শেষ ক্রমাগত বাফার পরিবর্তনটি সংজ্ঞায়িত করা যায় । সম্ভবত দুটি পয়েন্ট মুভগুলির মধ্যে একটি বাফার পরিবর্তন যা কোনও বাফার পরিবর্তনের ফলাফল নয় ( C-f, অনুসন্ধান, ইত্যাদি)? যদি
সেটির

একটি রেসিপি দিয়ে আপনি কী চান তা পরিষ্কার করুন। এখানে অনেক ধরণের "সন্নিবেশ" (পাঠ্য সন্নিবেশ করার উপায়) রয়েছে। আপনি কি ইন্টারেক্টিভ inোকাচ্ছেন? যদি তাই হয়, কিভাবে?
ড্রিউ

ইন্টারেক্টিভ। তবে আদর্শভাবে এটি কীভাবে বা কী তা বিবেচ্য নয়। এটি যেন আমি ম্যাক্রো সংজ্ঞায়িত করতে ভুলে গেছি । কোন ক্ষেত্রে সমস্যাটি কখন তা। সম্ভবত কিছু হুক ব্যবহার করা যেতে পারে।
ooi

2
আপনি ইমাসে 'শেষ সন্নিবেশ' কীভাবে সংজ্ঞায়িত করবেন? যেহেতু vi এর মতো কোনও সম্পাদনা / কমান্ড মোড স্যুইচ নেই, তাই ইতিহাসের আমাদের কতদূর যেতে হবে? আমি সাধারণত "শেষ সন্নিবেশ" নির্বাচন করি (( C-spaceকার্সারটি সরান, M-wঅনুলিপি করতে) এবং তারপরে C-yপ্রয়োজনীয় সময় হিসাবে পেস্ট করতে।
আলাইন

উত্তর:


7

dot-modeটাইপিং বা কমান্ডগুলির পুনরাবৃত্তি করার জন্য একটি "মাইনর মোড" এবং আপনার যা প্রয়োজন তা করতে পারে। এটি মূলত আপনার দ্বারা করা সর্বশেষ সন্নিবেশ / মোছার পুনরাবৃত্তি করে। এটি .ভি (মিঃ) এর সাথে বেশ মিল ।


2
কি করে এটা করবেন?
মালাবারবা

1
Emacs.SE এ স্বাগতম। এখনই, আপনি উত্তর একটি উত্তর চেয়ে একটি মন্তব্য কাছাকাছি। আপনি কী দয়া করে এটি সম্পাদনা করতে পারবেন dot-modeযা ওপি যে কার্যকারিতাটি পেতে চেষ্টা করছে তা কী করে এবং কীভাবে সরবরাহ করে?
ড্যান

7

এটি যেন আমি ম্যাক্রো সংজ্ঞায়িত করতে ভুলে গেছি

আপনি এটির জন্য kmacro-edit-lossage( C-x C-k l) ব্যবহার করতে পারেন : এটি আপনাকে আপনার 300 টি শেষ কাস্ট্রোকগুলি দেখতে (সাধারণ সন্নিবেশ সহ) এবং ম্যাক্রো হিসাবে এডিট করতে দেয়।

সাধারণ ব্যবহারের জন্য, আপনি যে সন্নিবেশটি পুনরাবৃত্তি করতে চান তার সবেমাত্র সূচনা করতে পারবেন, "ম্যাক্রো:" থেকে সেই বিন্দুতে সমস্ত পাঠ্য মুছুন এবং টিপুন C-c C-c। এখন আপনার কাছে ম্যাক্রো রয়েছে যা আপনি একই ক্রিয়াগুলি সম্পাদন করতে ব্যবহার করতে পারেন, যেন আপনি এটি প্রথম স্থানে রেকর্ড করতে ভুলে যান না।

দুঃখের বিষয়, শেষ 300 টি কী-স্ট্রোকে মাউস ক্লিকগুলি অন্তর্ভুক্ত থাকলে এটি ব্যর্থ হয়।

সম্পাদনা করুন: নিম্নলিখিত কোডটি এটি পরিবর্তন করে যাতে শেষ মাউস ইভেন্টের পরে কেবল কীগুলি রাখা হয়।

(defadvice recent-keys (after tv/recent-keys-no-mouse first ())
  "Return only the keys since the last mouse event"
  (let* ((vec ad-return-value)
         (lst (append vec nil))
         (nmax (length vec))
         (i (- nmax 1)))
    (while
        (and
         (>= i 0)
         (not
          (let ((mod (event-modifiers (elt vec i))))
            (or (memq 'click mod)
                (memq 'double mod)
                (memq 'triple mod)
                (memq 'drag mod)
                (memq 'down mod)))))
      (setq i (- i 1)))
    (setq ad-return-value (vconcat (nthcdr (+ i 1) lst) nil))))

(defun tv/kmacro-edit-lossage-no-mouse ()
  "Same as `kmacro-edit-lossage', but fallback if the keys contain mouse events.

Source: http://emacs.stackexchange.com/a/4071/184"
  (interactive)
  (ad-activate-regexp "tv/recent-keys-no-mouse")
  (call-interactively #'kmacro-edit-lossage)
  (ad-deactivate-regexp "tv/recent-keys-no-mouse"))

;; If you want this function to replace the default one, uncomment this line:
; (global-set-key (kbd "C-x C-k l") 'tv/kmacro-edit-lossage-no-mouse)

আমি প্রায়শই মাউস ব্যবহার করে স্ক্রোল করি, ম্যাক্রো থেকে কীভাবে সেগুলি সরিয়ে ফেলা যায় তা দেখতে ভাল লাগবে।
ooi

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

@ জ্ঞান্নী আমি কোনও ত্রুটি বার্তায় ব্যর্থ হওয়ার চেয়ে একটি (ইমো) আরও ভাল ফ্যালব্যাক সক্ষম করতে কিছু এলিজপ যুক্ত করেছি: এই ফাংশনটি দিয়ে, কেবল মাউসের শেষ ইভেন্টের পরে কীগুলি রাখা হবে। মাউস ইভেন্টগুলি পুরোপুরি ফেলে দেওয়াও খুব সম্ভব হওয়া উচিত, তবে ম্যাক্রোর ফলাফলটি কিছুটা অনাকাঙ্ক্ষিত হবে।
টি। ভেরন

@ooi আপনি পূর্ববর্তী মন্তব্যে স্বয়ংক্রিয়ভাবে পিন হয়ে গেলে কোনও ধারণা নেই, তাই আপনার পিংটিও এখানে।
টি ভেরন

ধন্যবাদ, আমি একই জিনিস নিয়ে কাজ করছিলাম। আমি মনে করি এটির আরগগুলি ফিল্টার করা সম্ভব edmacro-fix-menu-commands। এটি একটি alচ্ছিক যুক্তি নেয় যা মাউস ইভেন্টগুলিকে উপেক্ষা করতে পারে। তবে পরামর্শ পদ্ধতিটি এটি কার্যকর করার জন্য আমি যথেষ্ট জানি না।
আয়া

4

আমি মনে করি dabbrev-expandফাংশনটি কৌশলটি করতে পারে। ধরা যাক আপনি ইতিমধ্যে কিছু শব্দ টাইপ করেছেন: ইমাস, সংবেদন, ইমোজি, ... পরের বার আপনি 'এম' দিয়ে শুরু করে একটি শব্দ টাইপ করবেন, আপনি আঘাত করতে পারবেন M-/এবং ইমাস আপনাকে ইতিমধ্যে সন্নিবেশিত শব্দগুলির একটিতে সন্নিবেশ করার প্রস্তাব দিবে 'ইম' দ্বারা শুরু করা। মারতে থাকুন M-/এবং ইমাস আপনাকে 'ইমোজি' দেখাবে, তারপরে 'আবেগ, তারপরে ...

আপনার পুনরায় জটিল-কমান্ডের চেহারাও থাকতে পারে । জনপ্রিয় উদাহরণটি হ'ল: আপনি query-replaceসর্বদা একই আর্গুমেন্ট ব্যবহার করে অনেকগুলি আলাদা বাফারে কমান্ডটি পুনরাবৃত্তি করতে চান , "পিট" দ্বারা "প্যাট" দ্বারা প্রতিস্থাপন করতে পারেন।

আপনি এটি একবার চালান, অন্য উইন্ডোতে যান এবং C-x ESC ESCআবার চালনার জন্য টাইপ করুন ।

এবং শেষ করতে, আমি কি পুনরাবৃত্তি সন্নিবেশ করার পরামর্শ দিতে পারি ? এই এল ফাইলটি আপনাকে কোনও ধরণের যুক্তি ব্যবহার করে সন্নিবেশ করতে সহায়তা করবে। এটি আরও ভালো লেগেছে, "শেষ সন্নিবেশকে পুনরায় পরীক্ষা করা, তবে প্রতিটি পুনরাবৃত্তির জন্য, যুক্তিগুলি পরিবর্তন হবে।

এই উদাহরণটি এল ফাইলটিতে পাওয়া যেতে পারে :

;; You can also iterate over lists:
;;   My desk is cluttered
;;   My desk is a real mess
;;   My desk is very hard to see
;;   My desk is buried
;;
;; from m-x insert-patterned
;;    ";;   My desk is %s"
;;    (cluttered "a real mess" "very hard to see" buried)

আমি আশা করি এটি সাহায্য করবে


1
হতে পারে আপনি কিছুটা প্রসারিত করতে পারেন ...
টি ভেররন

@ টি.ভেরন হয়ে গেছে :)
শুকামি _

1
পুনরাবৃত্তি-জটিল-কমান্ডটি এর মতো repeat(যা ওপি উল্লেখ করে), পাঠ্য সন্নিবেশের জন্য সত্যই কার্যকর নয়। Repeat-insertম্যাক্রোর মতো পাঠ্য সন্নিবেশ করার আগে চিন্তা করা দরকার। তবে dabbrev-expandএকটি দুর্দান্ত ধারণা!
টি। ভেরন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.