কীভাবে একটি INCOMPLETE কীবোর্ড ম্যাক্রো রেকর্ডিং পুনরায় শুরু করবেন?


10

ক্লাসিক ব্যবহারের কেস:

  1. আপনি একটি ম্যাক্রো রেকর্ডিং শুরু: C-x (
  2. আপনি কিছু স্টাফ করবেন, বলুন hello
  3. আপনি একটি কমান্ড চালাচ্ছেন যা ত্রুটি ছুঁড়ে ফেলেছে , যাক C-g(উদাহরণস্বরূপ আপনি ভুল করে চালান C-sএবং আপনাকে এটি বাতিল করতে হবে C-g, এখন আপনার কাজটি ক্ষতিগ্রস্থ হবে)।

এখন পর্যন্ত আপনার রেকর্ডিং হারিয়ে গেছে।

আমার রেকর্ডিংয়ে বাধা দেয় এমন একটি কমান্ড চালানোর আগে আমি আবার কোথায় ফিরে যেতে চাই। আমি তাকালাম C-h f start-kbd-macro, তবে এটি সি তে লেখা আছে, তাই আমি এটি টুইট করতে পারি না। আমি যেমন একটি পরিবর্তনশীল জন্য প্রায় কাছাকাছি শিকার current-kbd-macro, কিন্তু এখনও পাওয়া যায় নি।

এটি পুনরুদ্ধার করা যাবে?

হালনাগাদ:

আমার C-u C-x (জন্য কেন কাজ করছে না তা আমি বুঝতে পারি না, তবে আমি এটি আবিষ্কার করেছি কারণ আমি পরীক্ষা করছিলাম C-g

দেখা যাচ্ছে এটি C-gবিশেষ - আপনি যদি অন্য ধরণের ত্রুটি যেমন ট্রিগার করেন eg

C-x ( M-: (signal 'quit nil) 

তারপরে এটি রেকর্ডিং বন্ধ করবে তবে এতে last-kbd-macroথাকবে তবে থাকবে "M-: M-( signal 'quit nil"with

C-x ( C-g

এটি রেকর্ডিং বন্ধ করে এবং রেকর্ডকৃত যেকোন কিছু বাতিল করে। একজন সিজি-হ্যাপি ব্যবহারকারী হিসাবে (যেমন আমার কমপক্ষে দু'জন বন্ধু রয়েছেন) এটি একটি দুর্ভাগ্যজনক পার্থক্য। আমি সম্পাদনা করার চেষ্টা করেছি keyboard-quit, তবে সেখানে আমি কিছুই করতে পারি না।

এটি পুনরুদ্ধার করার মাধ্যমে একমাত্র উপায় মত দেখায় recent-keysএবং স্বয়ংক্রিয়ভাবে figuring আউট যেখানে একটি স্টার্ট kbd-ম্যাক্রো (অথবা অনুরূপ) বলা হত হিসাবে, kmacro-edit-lossage

উত্তর:


8

আমি শুরু একটি বাস্তবায়ন এখানে যা আপনি আপনার নতুন করে বাঁধানো দেয় C-x (করার resmacro-start-macro

এখন, ধরুন আপনি ম্যাক্রোর মধ্য দিয়ে অর্ধেক পথ পেয়েছেন এবং একটি ভুল করেছেন এবং আঘাত করেছেন C-g, যেমন আপনি C-sভুল করে চালাচ্ছেন এবং তাই C-gএটি বাতিল করার জন্য আপনি আঘাত করেছেন বা ডাব্লু / ই।

C-x ( hello C-s C-g 

এখন চালান C-u C-x (যা মিনিবুফারের সাথে প্রম্পট করবে:

এর সাথে ম্যাক্রো পুনরায় শুরু করুন (আরইটি: চালিয়ে যান, ডেল: শেষ অপসারণ করুন): h e l l o C-s

সুতরাং আপনি DELমুছে ফেলতে C-sএবং তারপরে RETএগিয়ে যাওয়ার জন্য ব্যাকস্পেস ( ) টিপুন । এখন এটি বলে:

কেবিডি ম্যাক্রোতে যুক্ত হচ্ছে ...

এবং আপনি চালিয়ে যেতে পারেন।

সর্বমোট:

C-x (      -- start macro
hello
C-s        -- mistake
C-g        -- cancel mistake (and macro)
C-u C-x (  -- recover lost macro
DEL        -- remove mistake
RET        -- continue recording
world!

সুবিধাজনক, প্রসঙ্গের স্যুইচ নয়, টাস্ক অর্জনের জন্য ন্যূনতম কী-বাইন্ডিংস, আপনার ম্যাক্রো কোথা C-x (থেকে শুরু হয়েছে তা স্বয়ংক্রিয়ভাবে নির্ধারণ করে (recent-keys)


1
আরে, খুব সুন্দর লাগছে। এটি ইমাসগুলিতে প্যাচ হিসাবে জমা দেওয়ার জন্য যত্নশীল?
স্টিফান

আপনার পছন্দমতো তাই / সংলাপে আপনাকে স্বাগতম! আমি এটি কোথাও ঘোষণার আগে স্থানীয়ভাবে এটির জন্য কিছুক্ষণ পরীক্ষা করে যাচ্ছি, যাতে আমি এটি নির্ভরযোগ্য জানতে পারি। যদিও ইম্যাক্স রক্ষণাবেক্ষণকারীরা মনে হতে পারে এটি খুব হ্যাকিযুক্ত। ;-)
ক্রিস্টোফার

এটি ইমাসে অন্তর্ভুক্ত করার জন্য আমাদের কপিরাইট পেপার ওয়ার্কে স্বাক্ষর করার জন্য লেখকের প্রয়োজন (একই কাগজটি godশ্বর-মোডে অবশ্যই আবৃত হবে)।
স্টেফান 21

লিঙ্কটি এখন ভেঙে গেছে :(
ময়লা আইসিসি

2

সম্পাদন kmacro-start-macro-or-insert-counterউপসর্গ (সঙ্গে C-u) পূর্ববর্তী ম্যাক্রো করার সংযোজন করতে হবে।


2
Docstring তাই বলে না, কিন্তু একটি ডবল উপসর্গ ARG ( C-u C-u) সেট উভয়APPEND এবং NO-EXECআর্গুমেন্ট start-kbd-macro, যা আপনি যোগ করতে দেয় ছাড়া ম্যাক্রো তাই এ পর্যন্ত প্রাথমিক রিপ্লে। এই আচরণ করা হয় ম্যানুয়াল নথিভুক্ত অবশ্য:(emacs) Basic Keyboard Macro
phils

আমার প্রশ্নের উদাহরণ সহ এটি চেষ্টা করুন, কাজ করে না।
ক্রিস্টোফার

2

এসটিস্কাড এবং আর্টাগন থেকে ভাল উত্তরগুলির সংমিশ্রণ (আমার মনে) সমস্যার সম্পূর্ণ সমাধান দেয় যা সম্পূর্ণ যুক্তিসঙ্গত:

  • C-xC-keC-hl ক্ষতি থেকে উত্পন্ন ম্যাক্রো সম্পাদনা করতে
  • মূল রেকর্ডিংয়ে এটি হ্রাস করতে ম্যাক্রো সম্পাদনা করুন
  • C-cC-c সম্পাদিত ম্যাক্রো সংরক্ষণ করতে
  • হয় C-u<f3>প্রথমে সেই ম্যাক্রোটিকে পুনরায় খেলুন এবং তারপরে পরবর্তী কীস্ট্রোকগুলি রেকর্ডিং চালিয়ে যান যা ম্যাক্রো সংজ্ঞাতে সংযুক্ত করা হবে
  • ... বা ম্যাক্রো-এতদূর-এর প্রাথমিক পুনরায় খেলানো ছাড়াইC-uC-u<f3> রেকর্ডিং চালিয়ে যেতে ।

হতে পারে ক্ষতির হিসাবে ম্যাক্রো সম্পাদনা করার প্রয়োজনটি আদর্শ নয় তবে (ক) আপনি রেকর্ডিংটি বাতিল করে দিলে ম্যাক্রো সম্পাদনা করার প্রয়োজন ছিল এবং (খ) এটি খুব ঘন ঘন হওয়া উচিত নয়, যদি আপনি কেবল ম্যাক্রোকে কীভাবে থামাতে চান তা সাধারণত (উদাহরণস্বরূপ <f4>পরিবর্তে C-g)।

এর মধ্যে কোনওটিই বলার অপেক্ষা রাখে না যে যদি গর্ভবতী ম্যাক্রো কোথাও সংরক্ষণ করা হয় তবে এটি কার্যকর হবে না; এটা ঠিক যে আমি মনে করি না এটি আসলে ঘটেছিল। এটি সম্ভবত M-x report-emacs-bugএই বৈশিষ্ট্যটি পরামর্শ দেওয়া উপযুক্ত হবে ।


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

1
অবশ্যই, সহজ মামলার জন্য আরম্ভ করা সহজ হবে। এটি এখনও বাকী অংশগুলির জন্য দরকারী, যদিও এর অর্থ কিছু লোক এটি সহায়ক হিসাবে খুঁজে পাবে; বিশেষত এটি ডিফল্ট হিসাবে উপলব্ধ। যেমন আমি ইঙ্গিত করেছি, আমি মনে করি যে আরও বেশি স্বয়ংক্রিয় পদ্ধতির ধারণাটি একটি ভাল, সুতরাং আপনি একটি সমাধানে কাজ করতে পেরে খুশি হলাম এবং অবশ্যই আপনার উত্তরটি আপ-ভোট দিয়েছি।
ফিল্ডস

0

ক্যানোনিকাল সলিউশনটি হ'ল C-x C-k C-e( kmacro-edit-macro) যা আপনাকে প্রতিটি কী-প্রেসের মধ্য দিয়ে যেতে হবে এবং যা খুশি সন্নিবেশ / মুছবে delete সম্পাদকের জন্য কমান্ড সিনট্যাক্সটি সামান্য সংক্ষেপে তবে ?একটি গাইড আনবে। C-x C-k e( edit-kbd-macro) এর সাথে আবদ্ধ আরও একটি প্রাকৃতিক সম্পাদক রয়েছে যা ভাষ্য সহ একটি সাধারণ পাঠ্য ম্যাক্রো সম্পাদক দেয়।

আরেকটি বিকল্প হ'ল M-x insert-kbd-macroযা আপনাকে লিস্প হিসাবে ম্যাক্রো সম্পাদনা করার অনুমতি দেবে কিন্তু এটি বিশ্বের সর্বাধিক পঠনযোগ্য জিনিস নয়।

যতক্ষণ ভেরিয়েবল সম্পর্কিত আপনি অনুসন্ধান করছেন last-kbd-macroএবং kmacro-ring

আপনি যেমন উল্লেখ করেছেন যে আপনি আপনার ম্যাক্রো সম্পন্ন করেননি, আপনি কেবল এটি আপনার ক্ষতি থেকে তৈরি করতে পারেন। C-x C-k e C-h lএবং 300 পূর্ববর্তী অক্ষর মুছুন।


এটি একটি খারাপ উত্তর আমি যদি আমি করতে চাই তবে ডাউনওয়েট করব। আপনি হয় প্রশ্নটি পড়েননি বা এড়িয়ে যাচ্ছেন। চাবিগুলি টিপে বা ত্রুটি সংঘটিত হওয়ার আগে না হয় last-kbd-macroনা । আমি এই জাতীয় খারাপ উত্তরগুলির প্রত্যাশা করে আমার শিরোনামে বিশেষভাবে সমস্ত ক্যাপগুলিতে INCOMPLETE রেখেছি। যদিও সাহায্য করার চেষ্টা করার জন্য ধন্যবাদ। kmacro-ringC-g
ক্রিস্টোফার

1
@ ক্রিস্টোফারডোন: নিশ্চিত আপনি পারবেন - ক্ষতির কথা উল্লেখ করার জন্য নীচে একটি নোট যুক্ত করেছি। আপনি আপনার আগের টাইপ করা অক্ষরের 300 টি পর্যন্ত ম্যাক্রো তৈরি করতে পারেন।
stsquad

হ্যাঁ, কেউ # ইমাসে ক্ষতির কথা উল্লেখ করেছেন। আমি যেখানেই ছেড়েছি সেখানেই আবার শুরু করতে চাই। যখন আমি কিছু করার মাঝে থাকি তখন আমি সম্পাদকটি খুলতে এবং জিনিসগুলি মুছতে শুরু করতে চাই না।
ক্রিস্টোফার

2
: এই এবং artagnon এর উত্তর সমন্বয় একটি সূক্ষ্ম সমাধান দিতে C-x C-k e C-h lসম্পাদন করা, C-c C-cতারপর, C-u f3রেকর্ডিং (লক্ষ করেন, যে গত বহন করে f3প্রথমত হবে খেলা সামষ্টিক এইভাবে-পর্যন্ত আরও ইনপুট অপেক্ষা করার আগে)। হতে পারে ক্ষতির হিসাবে ম্যাক্রো সম্পাদনা করার প্রয়োজনটি আদর্শ নয় তবে (ক) আপনি রেকর্ডিংটি বাতিল করে দিলে ম্যাক্রো সম্পাদনা করার প্রয়োজন ছিল এবং (খ) এটি খুব ঘন ঘন হওয়া উচিত নয়, যদি আপনি কেবল ম্যাক্রোটিকে কীভাবে থামাতে চান তা মনে হয়।
ফিল্ডস

1
@ ফিলস +1 সম্ভবত আপনার এটিকে একটি পৃথক উত্তরে রূপান্তর করা উচিত।
itjeyd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.